Переход с BDE на ADO. Блокировки DbiAcqTableLock...

pan_kolbasa
Дата: 08.06.2009 10:37:22
Доброго времени суток!
Осуществляется переход на ADO и в одной из функций (оговорюсь, продукт изначально не мой) встретил вот это:

function Tlock.getNum(alias,table,field:String;step:Integer):Integer;
var i:Integer;
begin
table1.DataBaseName:=alias;
table1.TableName:=table;
table1.open;

while DbiAcqTableLock(Table1.Handle ,dbiWriteLock)<>0 do;
      i:=table1.FieldByName(field).asInteger;

      Table1.Edit;
      Table1.FieldByName(field).AsInteger :=i+step;
      Table1.Post;
      Table1.UnLockTable(ltWriteLock);
      table1.close;
      getNum:=i;
end;
Как я понял функция блокирует указанную таблицу с тем, чтобы забрать номер следующей записи и присвоить полю номер+1.
Теперь вопрос-как осуществить такую же блокировку таблицы средствами ADO (Query,Table)?
Заранее благодарен )
RENaissance
Дата: 08.06.2009 10:42:43

Какая СУБД?

Posted via ActualForum NNTP Server 1.4

pan_kolbasa
Дата: 08.06.2009 10:45:43
пардон... Delphi7, MS SQL EM 8.0
RENaissance
Дата: 08.06.2009 11:29:19

ADO "не умеет" блокировать таблицы. По конкретной реализации блокировки таблицы идите в форум по MSSQL.

Posted via ActualForum NNTP Server 1.4

pan_kolbasa
Дата: 08.06.2009 12:49:29
спс, так и сделаю...
pan_kolbasa
Дата: 08.06.2009 12:56:31
Гыыыы... отправили обратно )))
Гаджимурадов Рустам
Дата: 08.06.2009 12:59:44
Обсуждайте в этом топике, параллельный закрываю.
Альт
Дата: 08.06.2009 13:06:32
А чего обсуждать в ветке дельфи проблемы с базой... выбрать или не выбрать auto increment для этого поля?
Grayscale
Дата: 08.06.2009 18:03:12
while DbiAcqTableLock(Table1.Handle ,dbiWriteLock)<>0 do;

Ждет когда будет снята блокировка
Grayscale
Дата: 08.06.2009 18:05:19
В целом функция реализует счетчик. Возвращает значение инкрементирует его и сохраняет.