Duvida em Campo autoincremento
Estou utilizando FB e Dbexpress, criei um generator e uma trigger para gerar codigo autoincremento, faço o Insert no ClientDataset, depois Post e ApplyUpdates(0):
1) No campo Codigo nao aparece o novo codigo.
2) Se eu, logo em seguinda for alterar o registro retorna erro que o registro nao foi encontrado ou esta sendo usado por outro usuario.
Como posso resolver isso? Utilizar esse mecanisco de gerar autoincremento é a melhor solucao?
Sei que se eu fizer um reflesh logo em seguida ao ApplyUpdate, resolve em parte, porem estarei fazendo nova consulta a tabela e isso eu nao queria fazer.
Abs
1) No campo Codigo nao aparece o novo codigo.
2) Se eu, logo em seguinda for alterar o registro retorna erro que o registro nao foi encontrado ou esta sendo usado por outro usuario.
Como posso resolver isso? Utilizar esse mecanisco de gerar autoincremento é a melhor solucao?
Sei que se eu fizer um reflesh logo em seguida ao ApplyUpdate, resolve em parte, porem estarei fazendo nova consulta a tabela e isso eu nao queria fazer.
Abs
Felipeiw
Curtidas 0
Respostas
Emrinfo
28/08/2006
Voce pode gerar um generator no banco, e Clientdataset no evento OnNewRecord voce coloca o codigo:
var
ResultSet : TCustomSQLDataSet;
SqlStmt : String;
begin
SqlStmt := ´select gen_id(Gen_clientes_id,1) ´+
´as valor from RDB$DATABASE;´;
ResultSet := nil;
Try
FrmDm.SQLConnection1.Execute(SqlStmt, nil, @resultSet);
If Assigned(ResultSet) then
cds_ClienteId_Codigo_cli.asInteger := ResultSet.fieldByName(´Valor´).asInteger;
Finally
resultSet.Free;
end;
Espero que seja isto.
var
ResultSet : TCustomSQLDataSet;
SqlStmt : String;
begin
SqlStmt := ´select gen_id(Gen_clientes_id,1) ´+
´as valor from RDB$DATABASE;´;
ResultSet := nil;
Try
FrmDm.SQLConnection1.Execute(SqlStmt, nil, @resultSet);
If Assigned(ResultSet) then
cds_ClienteId_Codigo_cli.asInteger := ResultSet.fieldByName(´Valor´).asInteger;
Finally
resultSet.Free;
end;
Espero que seja isto.
GOSTEI 0