Использование DBIopenlocklist
Автор: Reinhard Kalinke
Вот пример поиска пользователей данной таблицы. Имейте в виду, что свойство
TStringList Duplicate установлено в dupIgnore, поскольку пользователь может
иметь более одной блокировки таблицы. При работе с dBase возвращается только
блокировка текущего сеанса, тогда как с Paradox функция покажет всех
пользователей, получивших доступ к этому же NET-файлу.
procedure GetTableUserList(ATable: TTable; AStringList: TStringList);
var
hUserCur: hDBICur;
pUserBuf: pByte;
begin
AStringList.Clear;
AStringList.Duplicates := dupIgnore;
Check(DBIOpenLockList(ATable.Handle, True, True, hUserCur));
GetMem(pUserBuf, SizeOf(LOCKDesc));
try
while (DBIGetNextRecord(hUserCur, dbiNOLOCK, pUserBuf, nil) = DBIERR_NONE) do
AStringList.Add(StrPas(pLOCKDesc(pUserBuf)^.szUserName))
finally
FreeMem(pUserBuf, SizeOf(LOCKDesc));
DBICloseCursor(hUserCur);
end;
end;
|
|