campo auto incremento - SQLConnection.Execute - deprecated
O Help do Delphi XE3 diz:
function Execute(const SQL: string; Params: TParams): Integer; overload;
function Execute(const SQL: string; Params: TParams; var ResultSet: TDataSet): Integer; overload;
function Execute(const SQL: string; Params: TParams; ResultSet: Pointer): Integer; overload; deprecated 'Use overloaded method instead';
procedure TDMCustomer.cds_customerNewRecord(DataSet: TDataSet);
var
ResultSet: TCustomSQLDataSet;
SQLstmt: string;
begin
SQLstmt := 'SELECT gen_id(GCUSTOMER,1)' + 'as VALOR from RDB$DATABASE;';
ResultSet := nil;
try
DMCustomer.SQLConnection.Execute(SQLstmt, nil, @ResultSet);
if Assigned(ResultSet) then
begin
cds_customer.FieldByName('CUSTOMERID').AsInteger :=
ResultSet.FieldByName('VALOR').AsInteger;
end;
finally
ResultSet.Free;
end;
end;
O campo CUSTOMERID não recebe o valor de ResultSet! Porque? Por Favor podem me ajudar uma outra maneira?
function Execute(const SQL: string; Params: TParams): Integer; overload;
function Execute(const SQL: string; Params: TParams; var ResultSet: TDataSet): Integer; overload;
function Execute(const SQL: string; Params: TParams; ResultSet: Pointer): Integer; overload; deprecated 'Use overloaded method instead';
procedure TDMCustomer.cds_customerNewRecord(DataSet: TDataSet);
var
ResultSet: TCustomSQLDataSet;
SQLstmt: string;
begin
SQLstmt := 'SELECT gen_id(GCUSTOMER,1)' + 'as VALOR from RDB$DATABASE;';
ResultSet := nil;
try
DMCustomer.SQLConnection.Execute(SQLstmt, nil, @ResultSet);
if Assigned(ResultSet) then
begin
cds_customer.FieldByName('CUSTOMERID').AsInteger :=
ResultSet.FieldByName('VALOR').AsInteger;
end;
finally
ResultSet.Free;
end;
end;
O campo CUSTOMERID não recebe o valor de ResultSet! Porque? Por Favor podem me ajudar uma outra maneira?
Celso Saito
Curtidas 0
Respostas
Marco Salles
09/10/2012
Apesar de ser deprecated , deveria manter a compatibilidade
Me parece que sua instrução sql esta errada
SQLstmt := 'SELECT gen_id(GCUSTOMER,1)' + 'as VALOR from RDB$DATABASE;';
por
SQLstmt := 'SELECT gen_id(GCUSTOMER,1) AS VALOR from RDB$DATABASE';
Verifique também o nome do Gerador se esta com a sintaxi correta
[]sds
Me parece que sua instrução sql esta errada
SQLstmt := 'SELECT gen_id(GCUSTOMER,1)' + 'as VALOR from RDB$DATABASE;';
por
SQLstmt := 'SELECT gen_id(GCUSTOMER,1) AS VALOR from RDB$DATABASE';
Verifique também o nome do Gerador se esta com a sintaxi correta
[]sds
GOSTEI 0
Celso Saito
09/10/2012
Apesar de ser deprecated , deveria manter a compatibilidade
Me parece que sua instrução sql esta errada
SQLstmt := 'SELECT gen_id(GCUSTOMER,1)' + 'as VALOR from RDB$DATABASE;';
por
SQLstmt := 'SELECT gen_id(GCUSTOMER,1) AS VALOR from RDB$DATABASE';
Verifique também o nome do Gerador se esta com a sintaxi correta
[]sds
Me parece que sua instrução sql esta errada
SQLstmt := 'SELECT gen_id(GCUSTOMER,1)' + 'as VALOR from RDB$DATABASE;';
por
SQLstmt := 'SELECT gen_id(GCUSTOMER,1) AS VALOR from RDB$DATABASE';
Verifique também o nome do Gerador se esta com a sintaxi correta
[]sds
Oi fiz as correções, mas ainda o CUSTOMERID não consegue pegar o VALOR.
GOSTEI 0
Celso Saito
09/10/2012
Apesar de ser deprecated , deveria manter a compatibilidade
Me parece que sua instrução sql esta errada
SQLstmt := 'SELECT gen_id(GCUSTOMER,1)' + 'as VALOR from RDB$DATABASE;';
por
SQLstmt := 'SELECT gen_id(GCUSTOMER,1) AS VALOR from RDB$DATABASE';
Verifique também o nome do Gerador se esta com a sintaxi correta
[]sds
Me parece que sua instrução sql esta errada
SQLstmt := 'SELECT gen_id(GCUSTOMER,1)' + 'as VALOR from RDB$DATABASE;';
por
SQLstmt := 'SELECT gen_id(GCUSTOMER,1) AS VALOR from RDB$DATABASE';
Verifique também o nome do Gerador se esta com a sintaxi correta
[]sds
Oi fiz as correções, mas ainda o CUSTOMERID não consegue pegar o VALOR.
assim ficou...
procedure TDMCustomer.cds_customerNewRecord(DataSet: TDataSet);
var
ResultSet: TCustomSQLDataSet;
SQLstmt: string;
begin
ResultSet := nil;
SQLstmt := 'SELECT gen_id(GCUSTOMER,1) AS VALOR from RDB$DATABASE';
try
DMCustomer.SQLConnection.Execute(SQLstmt, nil, @ResultSet);
if Assigned(ResultSet) then
begin
cds_customer.FieldByName('CUSTOMERID').AsInteger := ResultSet.FieldByName('VALOR').AsInteger;
end;
finally
ResultSet.Free;
end;
end;
GOSTEI 0
Marco Salles
09/10/2012
assim ficou...
Não entendi ??? Assim ficou certo ou assim continua dando erro ???
GOSTEI 0
Celso Saito
09/10/2012
assim ficou...
Não entendi ??? Assim ficou certo ou assim continua dando erro ???
oi, desculpe... continua dando erro.
GOSTEI 0
Celso Saito
09/10/2012
assim ficou...
Não entendi ??? Assim ficou certo ou assim continua dando erro ???
oi, desculpe... continua dando erro.
executei essa sql e está ok - SELECT gen_id(GCUSTOMER,1) AS VALOR from RDB$DATABASE
parece mesmo que a causa está aqui -> ou no Execute ou no Assigned
DMCustomer.SQLConnection.Execute(SQLstmt, nil, @ResultSet);
if Assigned(ResultSet) then
GOSTEI 0
Alisson Santos
09/10/2012
Conseguiu sanar o erro, estou questionando devido a mensagem acima
GOSTEI 0