Russian Belarusian English German Japanese Ukrainian

Установка уровня доступа

CuBook05

В случае многопользовательского доступа к БД для таблицы можно задать уровни доступа, которые будут действовать для других приложений. Уровень доступа определяет возможность записи данных в таблицу и их чтения.
 
Метод void __fastcall LockTable (TLockType LockType); устанавливает блокировку для таблицы, при этом параметр LockType задает тип блокировки:
  • ltReadLock (запрещены запись и чтение записей таблицы); этот режим является своего рода режимом монопольного доступа;
  • ltwriteLock (запрещена запись в таблицу); другие приложения не могут выполнять модификацию записей таблицы, но чтение данных им разрешено.
Метод void __fastcall UnlockTable(TLockType LockType); снимает установленную ранее блокировку.
 
Рассмотрим пример блокировки таблицы.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int n, k;
AnsiString s;
try
{
Table1->LockTable(ItwriteLock); // Пересчет количества
Table1->First() ;
for (n = 0; n<Table1->RecordCount; n++)
{
Table1->Edit();
Edit1->Text=IntToStr(n);
Table1->FieldByName("Количество")->AsFloat = Table1->FieldByName("Количество")->AsFloat * 1.5;
Table1->Next();
}
Table1->Post();
catch (...)
{
// Отмена блокировки таблицы
Table1->UnlockTable(ltWriteLock);
}
Здесь для каждой записи таблицы значение ее поля с заголовком количество увеличивается в полтора раза. В начале каждой итерации в цикле таблица переводится в режим редактирования с помощью метода Edit. В противном случае изменения значений поля записи производиться не будет.
 
На время пересчета таблица блокируется, что защищает ее от внесения изменений другими приложениями. При операциях с таблицей выполняется локальная обработка исключений, состоящая в отмене блокировки таблицы.
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий


Защитный код Обновить