RES: [firebase-br] >>>>> Help por favor , as transaçoes em DBExpress estão me enlouquecendo <<<<<<

Jorge Luis Bublitz bublitz em tre-mt.gov.br
Ter Jul 25 16:30:56 -03 2006


Tente assim
TD.IsolationLevel := xilREADCOMMITTED;

Mas com a primeira rotina.

Jorge Luis Bublitz
Analista Desenvolvedor

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Antonio Carlos
Enviada em: terça-feira, 25 de julho de 2006 14:13
Para: FireBase
Assunto: [firebase-br] >>>>> Help por favor , as transaçoes em DBExpress
estão me enlouquecendo <<<<<<

Meus amigos, na literatura é dito que usando DbExpress e Delphi  voce 
controla uma transação assim :


begin
  try
    TD.TransactionID := 1;
    TD.IsolationLevel := xilREPEATABLEREAD;
    SQLConnection1.StartTransaction(TD);
    Sql4.Close;
    .....
    Sql4.ExecSQL;
    SQLConnection1.Commit(TD);
  except
    on e: Exception do
      begin
        SQLConnection1.Rollback(TD);
        MessageDlg('Erro XXXXXX : '+E.Message,mtError,[mbOK],0);
      end;
  end;

Isso funciona 100% se o banco esta sendo acessado apenas por um Client. So 
que quando ocorre de haver mais de um Client a executar o mesmo 
procedimento, da erro informando já haver um transação com esse ID

Ai fiz o seguinte :

var
 i : integer;
begin
  result := false;
  try
    i := 0;
    while i = 0 do i := Random(65000);
    TD.TransactionID := i;
    TD.IsolationLevel := xilREPEATABLEREAD;
    SQLConnection1.StartTransaction(TD);

Como podem ver a probabilidade de haver um mesmo ID para a transação é 
dificil mas não impossível e a M é que ocorre.

Estou fazendo algo errado  ?  Fico grato se puderem me ajudar.

Obrigado.

Antonio





______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa


-- 
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.394 / Virus Database: 268.10.4/396 - Release Date: 24/07/2006






Mais detalhes sobre a lista de discussão lista