Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.02;
Скачать: 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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.015 c
4-3664
prasaleff
2002-07-01 13:25
2002.09.02
Не всегда удается запустить другую программу через ShellExecute


1-3457
Cem
2002-08-20 20:36
2002.09.02
Как сделать, чтобы компонент рисовал на своем parent.


3-3277
bobr12
2002-08-12 13:49
2002.09.02
Как узнать дату в InterBase?


3-3304
Азазелло
2002-08-13 09:00
2002.09.02
Удаленная работа с MSSQL


3-3301
BigVova
2002-08-09 18:15
2002.09.02
Проблема с IB 6.0