![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Транзакции
Фагот © (2003-09-14 12:07:00)
Ввожу код, приведённый в хелпе D6.
IBDatabase1.Open;
IBTransaction1.StartTransaction;
Table1.Insert;
Table1.FieldByName("QUANTITY").AsInteger := StrToInt(Edit1.Text);
Table1.Post;
IBTransaction1.Commit;
Компилирую, получаю TransAction is activeю Что я делаю не так? Как правильно вносить изменения?
Evgeny V (2003-09-15 05:48:00) [1]
Скорее у тебя в транзкации свойство Active:=true (почему, другой вопрос, может ты и назначил, надо код смотреть), что бы не открывать уже открытую транзакцию
if not IBTransaction1.Active then
IBTransaction1.StartTransaction;
фетчить - см. хелп у TTable напимер FetchAll
Sergey_Masloff (2003-09-14 18:44:00) [2]
Если ругается значит транзакция уже открыта. Только и всего. Посмотри в какой момент она открывается.
Вообще схема проста
StartTransaction();
try
DoSomething(); /* Выполняешь запрос или открываешь Table или еще что угодно*/
Transaction.Commit();
except
Transaction.Rollback();
end;
Фагот (2003-09-14 16:39:00) [3]
Да, это сообщение ругается на StartTransaction, даже если Active=False. К тогму же я плохо понимаю терминологию - что есть фетчить? И как же мне грамотно провести транзакцию?
Sergey_Masloff (2003-09-14 16:01:00) [4]
У тебя Table.Active = true стоит. То есть как только законнектишься она сразу записи фетчит. А это без открытия транзакции не сделать - она ее и стартует по-тихому. А когда ты делаешь StartTransaction она уже стартована