Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];

Вниз

Как работать с транзакциями в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
7-3644
programmerts.narod.ru
2002-06-17 19:10
2002.09.02
Кто знает как закрыть все приложения Windows и вернуться к исходн


14-3602
Bboy
2002-08-07 15:19
2002.09.02
Очень нужна программа


14-3614
Igorek
2002-08-07 09:56
2002.09.02
Две задачки про взвешивание


1-3385
Gena S.
2002-08-22 11:24
2002.09.02
Как добавить закладку на страницу


1-3414
Still Swamp
2002-08-22 18:08
2002.09.02
Компиляция проэкта из коммандной строки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский