[firebase-br] Controle de transações

Magno System magnosysteminformatica em gmail.com
Qua Nov 25 14:29:15 -03 2009


Procure trabalhar com GENERATOR em vez de pegar o maior valor em um SELECT. 
Embora seja difícil que duas máquinas peguem o valor maior ao mesmo tempo, 
teóricamente é possível. Já com GENERATORS é impossível.


----- Original Message ----- 
From: "gmail" <thiago.rachadel em gmail.com>
To: "'FireBase'" <lista em firebase.com.br>
Sent: Wednesday, November 25, 2009 3:21 PM
Subject: [firebase-br] Controle de transações


Estou tendo um problemas com transações na movimentação de estoques. A
tabela de movimentação é composta pela chave empresa, código e utilizada em
várias áreas do sistema.
Mas para meu desespero em algumas situações (raras mais presentes) acontece
de dar conflito no campo código. Tenho um único IBTransacton para as
movimentações de estoque configurado com read_committed, rec_version,
nowait. Ao abrir um novo registro preencho todos os campos e somente no
final coloco o código como abaixo:

FrmPrincipal.TrEstoque.CommitRetaining;
Mov := MaiorValorReg('MOVIMENTO_ESTOQUE_ABS', ['CD_EMPRESA'],
[TabOPCD_EMPRESA.value], 'CD_MOVIMENTO') + 1;
TabMovimentoCD_MOVIMENTO.value := Mov;
TabMovimento.Post;
TabMovimento.ApplyUpdates(-1);
TabMovimento.DBTransaction.CommitRetaining;

Alguém tem alguma luz?? Utilizo Delphi + IBX + Firebird.


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 





Mais detalhes sobre a lista de discussão lista