Использование 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; |
Далее: Как научить VCL делать Refresh для запросов правильно »»