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.
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
Curtir tópico
+ 0
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.
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
Clique aqui para fazer login e interagir na Comunidade :)