GARANTIR DESCONTO

Fórum codigo de auto incremento #355535

17/03/2008

0

Pessoal tenho este codigo para autoincremento, mas esta dando um erro.
EStou usando dbexpress para controle do banco de dados ´sqlconnection, sqldataset, clientdataset, datasetprovider.

===================

procedure TForm1.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
begin

if clientdataset1.State in [dsinsert] then
begin
sqldataset1.Last;
autocode:=sqldataset1ID.Value+1;
sqldataset1ID.Value:=autocode;
end;
-----------------------------
O erro eh este... Não sei oq acontece q não funciona...

Project, Project1.exe raised exception class EDatabaseError with message ´SQKTable1: Operation not allowed on a unidirectiona datase´. Process stopped.


Japapdb

Japapdb

Responder

Posts

17/03/2008

Hall 9000

if clientdataset1.State in [dsinsert] then
begin
sqldataset1.Last; // O SQLdataset é um cursor unidirecional e vc não pode chamar o método => Last.
autocode:=sqldataset1ID.Value+1;
sqldataset1ID.Value:=autocode;
end;

na verdade vc tem usar os métodos cds, algo assim:

if clientdataset1.State in [dsinsert] then
begin
clientdataset1.Last;
autocode:= clientdataset1ID.Value+1;
clientdataset1ID.Value:=autocode;
end;

depois chame o cds.applyUpdates(0);

Obs.: colocar o clientdataset no último registro não quer dizer necessariamente que vc está no último ID gerado.


Espero que te ajude.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar