Re: [firebase-br] ID de Transacao em DbExpress, contribuição e ...
Antonio Carlos
a.lima.silva em terra.com.br
Seg Jul 31 09:38:41 -03 2006
Obrigado pela elucidação, quando o colega me passou a função, por não
conhecer o acronimo GUID fiquei na duvida mesmo.
[]s.
Antonio Carlos
----- Original Message -----
From: "Renan de Oliveira" <renan em safetech.inf.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, July 31, 2006 9:08 AM
Subject: Re: [firebase-br] ID de Transacao em DbExpress, contribuição e ...
GUIDs can be created in a number of ways, but usually they are a
combination of a few unique settings based on specific point in time (e.g.,
an IP address, network MAC address, clock date/time, etc.).
http://www.webopedia.com/TERM/G/GUID.html
ou seja, é uma combinaçao de diversar chaves únicas, como data/hora, e mac
address da maquina.
Renan de Oliveira
Safetech Informática
(51) 3529-3870
----- Original Message -----
From: "Antonio Carlos" <a.lima.silva em terra.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, July 31, 2006 9:01 AM
Subject: Re: [firebase-br] ID de Transacao em DbExpress, contribuição e ...
Veja se não estou a falar bobagem, o GUID não pode se duplicar na mesma
máquina o que garante que o GUID gerado por VARIAS maquinas não coincidam ?
----- Original Message -----
From: "Wellington Gomes dos Santos" <wllngtn em uol.com.br>
To: "Antonio Carlos" <a.lima.silva-y7mWNqJcIDpfJ/NunPodnw em public.gmane.org>;
"Firebase" <lista em firebase.com.br>
Sent: Saturday, July 29, 2006 12:16 PM
Subject: Re: [firebase-br] ID de Transacao em DbExpress, contribuição e ...
GUID significa Globally Unique Identifier, traduzindo Identificador
Único Universal.
O GUID numercamente tem 128 bit, ou seja
340.282.366.920.938.000.000.000.000.000.000.000.000 em decimal.
Teoricamente um GUID não pode duplicar. É muito improvável. É mais fácil
ganhar na mega sena.
Podemos afirmar então que a função abaixo é a mais recomendada:
function NewTransactionID: LongWord;
var
lGUID: TGUID;
begin
CreateGUID(lGUID);
Result := lGUID.D1;
end;
Wellington.
Antonio Carlos escreveu:
> Caros companheiros de lista,
> Na literarura encontramos diversos exemplos de como realizar transações
> com
> o DbExpress. Contudo, todos esses exemplos fundamentam-se em um ambiente
> Local ou onde apenas uma estacao acessa a base de dados pois utiliza um
> TransactionID := 1
> Na prática em uma aplicação multiusuario ao manter esse exemplo clássico
> acabamos por receber diversas mensagens de erro do firebird informando que
> a
> transação ja existe com esse ID.
>
> Eu usei o seguinte metodo para resolver isso :
>
> i := 0;
> while i = 0 then i := Randon(6500);
> TransactionID := i;
>
> Outra forma que um companheiro em uma lista delphi demonstrou foi :
>
> function NewTransactionID: LongWord;
> var
> lGUID: TGUID;
> begin
> CreateGUID(lGUID);
> Result := lGUID.D1;
> end;
>
> Ocorre que a cada numero gerado ocorre uma pequena probabilidade de ser
> gerado em outra estação ( imagine onde existam muitas ) de ser gerado o
> mesmo numero , e isso aconteceu comigo em um cliente.
>
> Me sugeriram n formas de gerar um id unico ( IP, IP+Hora, etc.. ) a que eu
> mesmo encontrei foi :
>
> TransactionID := Application.Handle em Delphi 7 ou TransactionID :=
> HInstance em D2005
>
> Isso resolve a questão do ID da transação realmente ? Veja que cada
> estacão
> irá ter esse ID diferente , mas ele não ira variar na estacão. Por lógica
> ,
> se abro a transação e fecho com um Id 123456 e novamente abro a transação
> e
> fecho com um Id 123456 teoricamante não haverá problemas .
>
> O que os companheiros podem acrescentar ?
>
> Antonio Carlos
>
>
>
>
>
>
>
>
>
> ______________________________________________
> 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
>
>
______________________________________________
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
__________ Informação do NOD32 IMON 1.1683 (20060728) __________
Esta mensagem foi verificada pelo NOD32 sistema antivírus
http://www.eset.com.br
______________________________________________
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
______________________________________________
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
__________ Informação do NOD32 IMON 1.1683 (20060728) __________
Esta mensagem foi verificada pelo NOD32 sistema antivírus
http://www.eset.com.br
Mais detalhes sobre a lista de discussão lista