Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обрыв соединения с БД Interbase [D6, IB6.x]


suharew ©   (2005-09-05 13:35:00) 

Добрый день. Пишу следущее

 if form1.IBTransaction1.InTransaction then
   begin
     form11.IBtable1.Edit;
     form11.IBtable1['adr']:=trim(adr);
     form11.IBtable1['dom']:=trim(dom);
     form11.IBtable1['kom']:=trim(dopkom);
     form11.IBtable1.Post;
     form1.IBTransaction1.Commit;
     form1.IBTransaction1.Active:=true;
   end;


или SQL запрос, неважно.
Все таблицы закрываются. Я так понял это связано с транзакцией как-то. Только не могу понять как? Если без транзакции то все нормально. Почему связь обрывается.


Zacho   (2005-09-07 08:37:00) [1]

suharew   (06.09.05 17:34) [5]

Надо стартовать и завершать транзакции когда тебе нужно. Не зная твоей задачи ничего конкретного сказать нельзя.
Изучи внимательно статьи на http://www.ibase.ru/develop.htm, особенно http://www.ibase/ru/devinfo/ibx.htm
Ещё не помешало бы изучить что-либо по теории РСУБД, например К.Дж.Дейт "Введение в системы баз данных"


suharew   (2005-09-06 17:34:00) [2]

Я уже перешел на IBQuery.
Только вот вопрос опять по транзакциям
У меня на всех IBQuery назначен один IbTransaction.
Как правильно оформлять SQL запрос с транзакцией. Яделаю так.

....
form1.IbQuety.Sql.Add('insert into basa (data,wrem) values(:data,:wrem)');
if form1.IBTransaction1.InTransaction then
  begin
    form1.IBQuery1.ExecSQL;
    form1.IBTransaction1.Commit;
    form1.IBTransaction1.Active:=true;
  end;


Или как написал Os (05.09.05 15:33) [4] через Try ..Except


Os   (2005-09-05 15:33:00) [3]

Если IBTransaction1 - общий, то зачем if

    form11.IBtable1.Edit;
    form11.IBtable1['adr']:=trim(adr);
    form11.IBtable1['dom']:=trim(dom);
    form11.IBtable1['kom']:=trim(dopkom);
    form11.IBtable1.Post;

Если IBTransaction1 для IBTable1 то наверно

 try
   IBTransaction.StartTransaction;
   form11.IBTable1.Edit;
   .........
   IBTransaction.Commit;
 except IBTransaction.RollBack;
 end;

Чем раньше перейти на TIBQuery тем меньше переделывать потом.


Zacho   (2005-09-05 14:16:00) [4]

2 suharew:
Да, ещё раз повторю: не стоит использовать TIBTable.


Zacho   (2005-09-05 14:06:00) [5]

suharew   (05.09.05 13:35)

Внимательно читай http://www.ibase.ru/devinfo/ibx.htm

Я же уже давал тебе эту ссылку.


Sergey13   (2005-09-05 13:44:00) [6]

CommitRetaining


Наверх

Титульная страница Поиск, карта сайта Написать письмо