Вниз
Скачать: CL | DM;

Как работать с транзакциями в MDI приложении?   Найти похожие ветки 

← →
Tony Green ©   (2002-08-09 16:50) [0]

Приветствую всех. Вопрос такой:

Нужно MDI приложение с двумя MDI Child формами. В каждой из них может производиться длительное действие по занесению данных в БД(набор длинных накладных, например) нуждающееся в транзакции. Как это правильно реализовать?


← →
Ura   (2002-08-09 17:04) [1]

1. Определяешь транзакцию в форме (устанавливаешь ее свойства)
IBTransactionKassa := TIBTransaction.Create(DM);
IBTransactionKassa.Params.Add("isc_tpb_read_committed");
IBTransactionKassa.Params.Add("isc_tpb_rec_version");

2. Создаешь компоненты для доступа к данным
IBQ_Kassa := TIBQuery.Create(DM) ;
IBU_Kassa := TIBUpdateSQL.Create(DM);
DS_Kassa := TDataSource.Create(DM);
(лучше иметь заготовку этих запросов в датамодуле и просто их назначитm на обработку (криво но работает, а главное протестить можно в датамодуле) Пример ниже )
IBQ_Kassa.SQL := DM.IBQ_Kassa.SQL;
IBQ_Kassa.AfterInsert := DM.IBQ_Kassa.AfterInsert;
IBQ_Kassa.OnNewRecord := DM.IBQ_Kassa.OnNewRecord;
IBU_Kassa.InsertSQL.Add(DM.IBU_Kassa.InsertSQL.Text);
3. Добавили транзакцию к базе
IBTransactionKassa.DefaultDatabase := DM.IBDatabase;
DM.IBDatabase.AddTransaction(IBQ_Kassa.Transaction);
4. Установили транзакцию и запустили
IBQ_Kassa.Transaction := IBTransactionKassa;
IBTransactionKassa.StartTransaction;
5. Ну соответственно можно теперь делать откат и сохранение через транзакцию...
6. и в конце
DM.IBDatabase.RemoveTransaction( DM.IBDatabase.FindTransaction(IBTransactionKassa));
IBTransactionKassa.Free;
IBTransactionKassa := nil; // может и ненадо :-)




← →
Polevi ©   (2002-08-09 17:10) [2]

можно для каждого MDI окна динамически создавать датамодуль со всеми вытекающими


← →
3JIA9I CyKA ©   (2002-08-09 17:13) [3]

2Polevi
А можно ещё QReport для каждого создавать - он там тоже не нужен.


← →
Polevi ©   (2002-08-09 17:23) [4]

23JIA9I CyKA ©
спасибо, я пользуюсь фастрепортом


← →
3JIA9I CyKA ©   (2002-08-09 17:50) [5]

тогда по 2 шт.


← →
Polevi ©   (2002-08-10 17:26) [6]

23JIA9I CyKA ©
почему так мало ?



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.011 c
14-3606
mvg_first
2002-08-07 13:10
2002.09.02
Посоветуйте какой SQL сервер лучше использовать MS или Interbase


3-3302
CashDi
2002-08-13 09:34
2002.09.02
Получение имени пользователя IB6, FireBird


7-3652
Naik
2002-06-21 06:27
2002.09.02
Как зарегестрировать за своей программой новый типа файлов?


1-3374
^Sanya
2002-08-20 02:08
2002.09.02
Оцените обновление сайта, дезайн


1-3345
RedArc
2002-08-21 18:19
2002.09.02
TMemo




   Наверх