Советы по Delphi

         

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


Вот пример поиска пользователей данной таблицы. Имейте в виду, что свойство 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;

- Reinhard Kalinke [000874]



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