Советы по Delphi

       

Использование DBIopenlocklist


Вот пример поиска пользователей данной таблицы. Имейте в виду, что свойство TStringList Duplicate установлено в dupIgnore, поскольку пользователь может иметь более одной блокировки таблицы. При работе с dBase возвращается только блокировка текущего сеанса, тогда как с Paradox функция покажет всех пользователей, получивших доступ к этому же NET-файлу.

procedure GetTableUserList(ATable: TTable; AStringList: TStringList);var hUserCur: hDBICur;pUserBuf: pByte;beginAStringList.Clear;AStringList.Duplicates := dupIgnore;Check(DBIOpenLockList(ATable.Handle,True,True,hUserCur));GetMem(pUserBuf,SizeOf(LOCKDesc));trywhile (DBIGetNextRecord(hUserCur,dbiNOLOCK,pUserBuf,nil) = DBIERR_NONE) doAStringList.Add(StrPas(pLOCKDesc(pUserBuf)^.szUserName))finallyFreeMem(pUserBuf,SizeOf(LOCKDesc));DBICloseCursor(hUserCur);end;end;

- Reinhard Kalinke [000874]



Содержание раздела