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

Antonio Carlos a.lima.silva em terra.com.br
Qua Ago 16 12:48:56 -03 2006


Primeiramente, obrigado pela resposta marcelo.

Creio que preciso destrinchar mais a coisa.

Ex: Usuario A abriu o sistema em uma maquina X , aparece para ele uma tela 
solicitando que ele confirme se a data MM/DD/YYYY é correta se for ele 
aceita ou corrige, ( se a data da maquina for anterior a armazenada termina 
a aplicação )

enquanto o usuário A esta se decidindo sobre a data, o usuario B abriu o 
sistema que encontrou o registro travado e ai simplesmente finaliza a 
aplicação informando que a data do sistema esta sendo atualizada em outra 
estação. Somente esta atualização será possível entrar no sistema.





----- Original Message ----- 
From: "marcelo luiz stefaniak - teflamar" <marcelo em teflamar.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Wednesday, August 16, 2006 12:42 PM
Subject: Re: [firebase-br] Help Please : Como travar registro e gerar 
exceção ?


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


______________________________________________
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.1707 (20060815) __________

Esta mensagem foi verificada pelo NOD32 sistema antivírus
http://www.eset.com.br






Mais detalhes sobre a lista de discussão lista