[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