Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Восстановление подлючения к БД 
:(
    Опции темы
santilaas
Дата 25.6.2007, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 322
Регистрация: 28.8.2005
Где: Блага

Репутация: нет
Всего: нет



Firebird 1.5.3., FibPlus 5.2
Привет всем!
Ситуация такая: по книге "Мир Interbase3" сделал обработку потери подключения к БД.
НО там рассматривается пример для одного конкретного DataSet-а.

Я же реализую обработку потери подключения с восстановлением и подтверждением 
хранящихся в кэше Датасетов данных. Вопрос в том, как это сделать или как правильно это сделать:
я делаю так:
Код

procedure TDM.DBAfterRestoreConnect(Database: TFIBDatabase);
var i:integer;
begin
   try
      DB.Connected:= True;
      if (Application.MessageBox(PChar('Соединение восстановлено! ' + #13 +
                                       'Подтвердить внесенные изменения?'),'Вопрос!',MB_OKCANCEL+MB_ICONWarning)=idOK) then
         begin
            for i:=0 to DB.FIBDataSetsCount - 1 do
               try
                  if not DB.FIBDataSets[i].Transaction.Active
                     then DB.FIBDataSets[i].Transaction.StartTransaction;
                        [color=blue]DB.FIBDataSets[i].ApplyUpdToBase;[/color]                        DB.FIBDataSets[i].Transaction.CommitRetaining;
                        [color=blue]DB.DataSets[i].CommitUpdToCach;[/color]
               except
                  if DB.FIBDataSets[i].Transaction.Active
                     then DB.FIBDataSets[i].Transaction.Rollback;
               end;
         end;
   except
      Application.MessageBox(PChar('Невозможно восстановить соединение!'),'Информация!',MB_OK+MB_ICONInformation);
      Exit;
   end;
end;


- 1 вопрос: Дельфи ругается при компиляции на строки:
  DB.FIBDataSets[i].ApplyUpdToBase;
  и 
  DB.DataSets[i].CommitUpdToCach;
  - говорит "Undeclared Identifier ApplyUpdToBase и CommitUpdToCach" соответственно, 
- 2 вопрос: нельзя ли транзакции подтверждать или отменять вне цикла разом для всех Датасетов или все же надо это делать по-отдельности? и вообще почему рассматривается только транзакция на чтение (в книжном примере),- а что же делать с транзакцией на запись? 
Помогите, кто чем может, а то каша в голове
Заранее спасибо!


--------------------
[
PM MAIL   Вверх
Deniz
Дата 26.6.2007, 04:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 8
Всего: 44



Если все DataSet'ы настроены на 2 транзакции и у всех пишущая одна, то можно так
Код

  err:=false;
  for i:=0 to pFIBDatabase1.FIBDataSetsCount-1 do begin
    try
      (pFIBDatabase1.FIBDataSets[i] as TpFIBDataSet).ApplyUpdToBase;
      (pFIBDatabase1.FIBDataSets[i] as TpFIBDataSet).CommitUpdToCach;
    except
      err:=True;
    end;
  end;
  if err then
    pFIBDatabase1.DefaultUpdateTransaction.Rollback
  else
    pFIBDatabase1.DefaultUpdateTransaction.Commit;



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0590 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.