Re: [firebase-br] Help Please : Como travar registro e gerar exceção ?

marcelo luiz stefaniak - teflamar marcelo em teflamar.com.br
Qua Ago 16 12:42:29 -03 2006


travamento pessimista,
veja abaixo:

begin
...
if not dmrod.testa_travamento('AG_ROD',edcod.text) then begin 
showmessage('reg.bloqueado');edcod.setfocus;exit;end;
...
end;

function tdmrod.testa_travamento(wtabela,wcod:string):boolean;
begin
result:=false;
while true do
begin
try
    dmrod.trava.StartTransaction;
    // Executando comandos SQL, que irão travar o registro cuja chave
    // esta armazenada em COD.
    dmrod.sqltrava.sql.text:='UPDATE '+wtabela+' SET COD = COD WHERE COD = 
'+h39(wcod);
    dmrod.sqltrava.Prepare;
    dmrod.sqltrava.ExecQuery;
    result:= True;
    Except
        // Se executou uma exceção, então o registro já está travado por 
outro usuário.
        dmrod.trava.Rollback;
        if application.MessageBox('O Registro está sendo alterado por outro 
usuário. Tentar novamente ?', 
'Atenção',mb_yesno+mb_iconquestion+mb_defbutton1) = mryes then
        Continue
        else break;
    end;
    break;
end;
end;

----- Original Message ----- 
From: "Antonio Carlos" <a.lima.silva em terra.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Wednesday, August 16, 2006 12:03 PM
Subject: [firebase-br] Help Please : Como travar registro e gerar exceção ?


Pessoal preciso de uma ajuda que pode ser banal derrepente para muitos mas é
a primeira vez que tenho que lidar com isso.

O caso é o seguinte :

Tenho um sistema que preciso implementar um controle de data global ou seja
todas as maquinas usem a data armazenada em uma tabela do banco.
Ate ai tudo bem. Ocorre que preciso que a primeira maquina ao abrir trave
esse registro de forma que somente após essa máquina acertar a data do banco
do servidor, as demais entrem no sistema, ou seja se a data não for alterada
nínguem entra.

Não sei se tento fazer uma transação que faça um lock no registro e as
demais ao verificarem esse lock gere uma exception que finalize a aplicação
ou se crio campos de controle na tabela.

Alguém poderia me dar uma luz ? ( a data do servidor foi descartada )

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





Mais detalhes sobre a lista de discussão lista