[firebase-br] Erro Commit....
Pablo Bragança
gafamaey em gmail.com
Ter Set 22 20:31:09 -03 2009
Seguinte pessoal:
Tô com um erro no meu sistema que tá meio "maluco" aqui...
Ao gravar as informações na tabela, se eu uso o Commit na transação, meu
generator retorna na próxima abertura o valor da última alteração
incrementado...
Ou seja, se minha última chave foi 20 e commitar a transação (que geralmente
eu faço qdo fecho o form), qdo eu reabrir o form para inserir novos dados,
meu generator vai incrementar os 20 e me retornar 40 da sequência....
Agora, se ao invés de usar o commit, eu usar o commitretaining, isto não
acontece.. Funciona perfeitinho.....
Alguém sabe me dizer o que eu posso estar fazendo errado??? será que meu
erro tá no momento em que pego o valor do meu generator???
Segue os trechos do formshow e do botão gravar... Em todos os dois eu pego o
valor do generator:
procedure TFNMarca.FormShow(Sender: TObject);
begin
caption:= 'SIGCOM - Nova Inclusão de Marca';
DMSIGCOM.tabMarca.Close;
DMSIGCOM.tabMarca.SQL.Clear;
DMSIGCOM.tabMarca.SQL.Add('select * from MARCA order by ID_MARCA');
DMSIGCOM.tabMarca.Open;
LimparTela;
DMSIGCOM.tabMarca.PreparedEdits:= True;
DMSIGCOM.tabMarca.Append;
querygenerator.SQL.Clear;
querygenerator.SQL.Add('select GEN_ID (GEN_MARCA_ID,1) from
RDB$DATABASE');
querygenerator.ExecSql;
cxDBGenerator.Text:= inttostr(querygenerator.Fieldbyname('GEN_ID').Value);
cxDBDescricao.SetFocus;
end;
procedure TFNMarca.btGravarClick(Sender: TObject);
begin
DMSIGCOM.tabMarca.Post;
DMSIGCOM.SIGCOM_Trans.CommitRetaining;
showmessage('MARCA INSERIDA COM SUCESSO!');
LimparTela;
DMSIGCOM.tabMarca.Append;
querygenerator.SQL.Clear;
querygenerator.SQL.Add('select GEN_ID (GEN_MARCA_ID,1) from
RDB$DATABASE');
querygenerator.ExecSql;
cxDBGenerator.Text:= inttostr(querygenerator.Fieldbyname('GEN_ID').Value);
cxDBDescricao.SetFocus;
end;
#########################
Att,
Pablo Bragança
Adm. Redes de Computadores
Programador - TI - Delphi/Firebird
Bel. Ciência da Computação
#########################
Mais detalhes sobre a lista de discussão lista