Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.06;
Скачать: CL | DM;

Вниз

Транзакции   Найти похожие ветки 

 
Наташа ©   (2003-01-22 13:14) [0]

Мастера Dephi Просветите пожалуйста. Использую компонент IBDataBase, IBTransaction и несколько IBQuery. Для работы приложения достаточно одного компонента IBTransaction? и если нужно больше , то для чего?
И второй вопрос. При запуске приложения обновляю таблицу следующим образом
IBTransaction.StartTransaction
try
Вызов ХП по модификации д-х в таблице
IBTransaction.Commt
except
IBTransaction.Rollback
Raise;
End;
Затем отрываю набор д-х (Select * from Price)
При повторном обращении к ХП сообщает , что транзакция активна. Почему?
Никаких действий с другими наборами д-х больше не делаю.


 
Наталия ©   (2003-01-22 14:25) [1]

Количество транзакций - дело вкуса. Я обычно делаю одну на чтение, другую на изменение записей. на www.ibase.ru почитай про них.


 
Mihas ©   (2003-01-22 14:31) [2]

Так как в момент открытия компонента TIBTransaction автоматически стартует связанная с ним транзакция. Только после этого можно открывать какие-то наборы данных. Посколку транзакции не могут быть вложенными, такой фрагмент будет ошибочным !
Делай так :
Вызов ХП по модификации д-х в таблице
TIBxxxx.Post;
//IBTransaction.StartTransaction !!! Ошибка! транзакция уже
стартовала
if IBTransaction.Active = False then
IBTransaction.StartTransaction;
try
IBTransaction.Commt //или CommitRetaining
except
IBTransaction.Rollback //или RollbackRetaining
End;

IBTransaction.CommitRetaining и IBTransaction.RollbackRetaining я использую для IB6, так как после этого не нужно переодкрывать связанные с транзацией наборы данных, и тебе советую :)
Я вставляю такой код во всех компонентах в котых можно редактировать данные в AfterPst и все работает чудно !
Пример:
procedure TDM.TIBQuery1AfterPost(DataSet: TDataSet);
begin
try
IBTransaction1.CommitRetaining;
except
IBTransaction1.RollbackRetaining;
end;
end;
Успехов тебе !



Страницы: 1 вся ветка

Текущий архив: 2003.02.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
1-15622
}{enon
2003-01-26 19:36
2003.02.06
Меню


1-15749
alex_bredin
2003-01-27 10:47
2003.02.06
доступ к динамич. созд. компонентам


1-15609
harismatik
2003-01-29 11:16
2003.02.06
Как узнать sendera?


1-15703
mgaikin
2003-01-27 14:45
2003.02.06
Вызов метода предка


7-15955
9999
2002-11-05 17:56
2003.02.06
Убить процесс при помощи Delphi