Fórum Firebird em duas máquinas ao mesmo tempo #376411

27/04/2010

0

EStou começando no firebird. Quando mando gravar na tabela do servidor está tudo bem, agora quando roda o servidor e cliente ao mesmo tempo ta dando o erro de pk_primary key. meu código de gavação: mando através de uma sql pear o maior código e acrescentar mais um: DMAMIZ.ibqMaxVenda.Close;
DMAMIZ.ibqMaxVenda.SQL.Clear;
DMAMIZ.ibqMaxVenda.SQL.Add('select max(CodVenda) from Venda');
DMAMIZ.ibqMaxVenda.Open;
Codvenda:=dmamiz.ibqMaxVendamax.AsInteger +1 ;
dmamiz.ibtVenda.Append;
dmamiz.ibtVendaCODVENDA.AsInteger:=Codvenda;
dmamiz.ibtVenda.post;
dmamiz.ibtVenda.refresh;
dmamiz.ibtVenda.ApplyUpdates;
DMAMIZ.IBTransaction1.CommitRetaining;
//esse aqui não adiantou, mais quando troquei para:
DMAMIZ.IBTransaction1.Commit;
//funcionou mais tenho que abrir todas as tabelas e querys aí fica lento, será que errei aonde? o que fazer para gravar fisicamente os registros e pela rede o computador cliente acumular mais um no código da venda? OBS.: Estou usando delphi 6 e Firebird 1.5 obrigado pela atenção
Oldair

Oldair

Responder

Posts

29/04/2010

Perivaldo Martins

Nobre colega, utilize o FB para fazer sua númeração automática, usando generator e trigger, vc vai evitar dores de cabeça.

Boa sorte e bons códigos.
Responder

Gostei + 0

29/04/2010

Wilson Junior

Aconselho a utilizar o GENERATOR para pegar o último código, pois pode acontecer de fazendo o MAX em duas estações ao mesmo tempo, pode ocorrer erro de chave primária.

Espero ter colaborado.
Responder

Gostei + 0

12/07/2010

Carlos Mazzi

Eu tive o mesmo problema, e tive que tratar as Transactions... mas resolveu... se precisar de ajuda.. tamo ae...abracos++
Responder

Gostei + 0

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

Aceitar