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