Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Виды ошибок при подключении к БД, Работа с блоком try-except 
V
    Опции темы
_andrews_
Дата 9.3.2007, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Delphi 6, FireBifd, FibPlus
На форме есть диалог открытия файла--пользователь выбирает БД для подключения. Но подключить он может КОНКРЕТНУЮ БД, ту, какую МНЕ надо. Другие БД или другие файлы подключить нельзя. Фильтр по расширению есть, но также есть возможность открытия НУЖНОЙ МНЕ БД с другим расширением (*.*)
Как мне обработать ошибку, если пользователь полезет открывать ДРУГОЙ, не тот файл?
Делаю так:
Код

procedure ...;
var PathDBFr: String;
begin
  OpenDlgSaveDBFr.Execute;
  PathDBFr := OpenDlgSaveDBFr.FileName;
  try
    pFIBDataBase.DBName := PathDBFr;
    pFIBDataBase.Connected := true;
    pFIBTransaction1.Active := true;
    pFIBDataSetHumans.Active := true;
  except 
    ON //Здесь нужно указать тип ошибки, типа EDivByZero
    DO MessageDlg('Invalid database', mtConfirmation, mbOKCancel,0);
  end;
end;

Как это сделать?*
Какие вообще существуют типы ошибок при работе с БД?*
Спасибо

Это сообщение отредактировал(а) _andrews_ - 9.3.2007, 19:54
PM MAIL   Вверх
comtat
Дата 10.3.2007, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

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



Код

except
  on E: EOleException do
        begin
           // Не верный путь к БД
           if (E.ErrorCode=-2147467259) then
           ...        
        end;


Код ошибки E.ErrorCode, E.Message - само сообщение


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
_andrews_
Дата 10.3.2007, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



EOleException-это что такое?*
"Необъявленный идентификатор" пишет
PM MAIL   Вверх
comtat
Дата 10.3.2007, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

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



Цитата(_andrews_ @  10.3.2007,  17:21 Найти цитируемый пост)
EOleException-это что такое?*

Цитата
Description

EOleException is the exception class for errors specific to the OLE IDispatch interface.


Смотри HELP..



--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
_andrews_
Дата 10.3.2007, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

except
      ON E: EOleException  DO
        MessageDlg('Invalid database', mtError, [mbOK] ,0);
    end;

ну я вот так пишу-то он не знает, что это.. (Ctrl+Spase тоже там в списке такого нету(( )
может его как-то объявить раньше?*
PM MAIL   Вверх
comtat
Дата 10.3.2007, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

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



Код

try
...твой код...
except
on e:Exception do
    begin
  ShowMessage(e.Message);
  ...твои действия в случае если твой код вызвал ошибку...
    end;
end;

Exception - Это ошибка, т.е. EZeroDivide - деление на ноль, и т.д.

в uses  добавь SysUtils


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
_andrews_
Дата 10.3.2007, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

try
   pFIBDSHumans.Active := true;
except
   ON E: EDBEngineError  DO
   begin
     ShowMessage(e.Message);
     MessageDlg('Invalid database', mtError, [mbOK] ,0);
   end;
end;

Если подключаю "левую" БД-просто вылетает и выдает ошибку с полями БД  smile 

EDBEngineError имеет свойства ErrorCount и свойство-массив Errors: одна операция с базой данных может породить сразу несколько ошибок...Такое еще нашел...Но результат тотже((

Это сообщение отредактировал(а) _andrews_ - 10.3.2007, 18:48
PM MAIL   Вверх
comtat
Дата 10.3.2007, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

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



Цитата(_andrews_ @  9.3.2007,  19:46 Найти цитируемый пост)
Как мне обработать ошибку, если пользователь полезет открывать ДРУГОЙ, не тот файл?

FileName пиши в OpenDialog,
если не будет совпадать, то выдавай ошибку... 



--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
_andrews_
Дата 10.3.2007, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



мне нужно предусмотреть все ситуации (ну..как можно больше), в т.ч. и варианты переименования (зачем-то...еси пользователю стукнет, вдруг) файла БД и даже изменения расширения, а если я заранее укажу фиксированное имя-то...сами понимаете.. (( А как же быть с путем?* если путь изменится..нет..мне кажется не самый лучший вариант


Это сообщение отредактировал(а) _andrews_ - 10.3.2007, 19:09
PM MAIL   Вверх
Bose
Дата 11.3.2007, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

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



_andrews_, при попытке подключения к некорректному файлу, корректное исключение будет возбуждено в компоненте доступа к базе данных. Разве не так? 
PM MAIL WWW Skype   Вверх
_andrews_
Дата 12.3.2007, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да! Спасибо за помощь! Заработало!!
Почему-то..))
Убрал блок ON...DO...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0488 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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