Buscar

Testa se a tabela esta ou não bloqueada 

Código

Function LockTable(Tb: TTable; Vezes: Integer): Boolean;
// Requer DBIprocs, DB, DBTables]
// declarados na clausula Uses da unit
var
FlagLock : Boolean;
Abandonou : Boolean;
Sempre : Boolean;
Ind : Integer;
Quant : Integer;
Temp : String;
NomeArq : String;
Mensagem : String;
begin
Sempre := (Vezes = 0);
FlagLock := True;
Abandonou := False;
Quant := 0;
NomeArq := '';
Temp := Tb.TableName;
Ind := 1;
while Ind <= Length(Temp) do
begin
if Copy(Temp,Ind,1) = '.' then
begin
Ind := Length(Temp);
end
else
begin
NomeArq := NomeArq + Copy(Temp,Ind,1);
end;
Ind := Ind + 1;
end;
NomeArq := UpperCase(NomeArq);
Mensagem := 'O arquivo "'+NomeArq+'" está sendo usado por outro usuário da rede.'+#13;
Mensagem := Mensagem + 'Deseja continuar tentando acessar este arquivo ?';
while FlagLock do
begin
try
Tb.LockTable(ltWriteLock);
FlagLock := False;
except
if (Quant > Vezes) and not Sempre then
begin
if MessageBox(GetActiveWindow, Pchar(Mensagem),'Confirmação',
MB_ICONQUESTION+MB_YESNO+MB_HELP) = idYes then
begin
Quant := 0;
end
else
begin
FlagLock := False;
Abandonou := True;
end;
end;
end;
Quant := Quant + 1;
end;
Result := not Abandonou;
end;  

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Banco de dados
Adicionada dia: 24/06/03
Por: Felipe Monteiro
Visualizada: 3058 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009