campo auto incremento - SQLConnection.Execute - deprecated

Delphi

09/10/2012

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?
Celso Saito

Celso Saito

Curtidas 0

Respostas

Marco Salles

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
GOSTEI 0
Celso Saito

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


Oi fiz as correções, mas ainda o CUSTOMERID não consegue pegar o VALOR.
GOSTEI 0
Celso Saito

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


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

Marco Salles

09/10/2012

assim ficou...


Não entendi ??? Assim ficou certo ou assim continua dando erro ???
GOSTEI 0
Celso Saito

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

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

Alisson Santos

09/10/2012

Conseguiu sanar o erro, estou questionando devido a mensagem acima
GOSTEI 0
POSTAR