Главная страница
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.012 c
1-15612
Eugenex
2003-01-28 13:53
2003.02.06
Монитор уснул, монитор проснулся ?


1-15748
qwerty2
2003-01-28 10:18
2003.02.06
Отладка DLL


1-15751
V-Isa
2003-01-28 12:06
2003.02.06
StringGrid, Event


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


6-15808
Jurgen
2002-12-15 22:09
2003.02.06
Сеть