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

edcley edcley em eletroacre.com.br
Sex Ago 25 11:52:52 -03 2006


Cara 

  O certo é criar um guid Globally Unique Identifier
 Usando  a função   cocreateguid();

 Edcley


-----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 13: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/401 - Release Date: 26/7/2006






Mais detalhes sobre a lista de discussão lista