Вниз
Скачать: 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.01 c
4-3661
v0id
2002-07-01 08:57
2002.09.02
Как компилить из своей программы?


4-3665
mcs
2002-06-27 09:43
2002.09.02
Список экспортируемых ф-ций


1-3349
XPatriot
2002-08-18 00:43
2002.09.02
MDIForm ы


1-3367
c0pyc@t
2002-08-22 09:31
2002.09.02
Глюк с Enabled


1-3353
Ahmad
2002-08-19 13:03
2002.09.02
Файлы в DLL, миф или реальность?




   Наверх