Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 887

/ вопрос открыт /

Здравствуйте! Допустим, есть у меня БД и exe-шник, работающий с ней. Допустим БД была удалена или перемещена. При запуске программы сразу появится системная ошибка, т.к. программа не найдет файл БД. Как избежать эту системную ошибку, прописав свой код, который на случай отсутствия или удаления файла БД будет выводить соответствующее сообщение.

Валеев Рустам Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Валеев Рустам (статус: Посетитель)
Вопрос отправлен: 9 сентября 2008, 15:27
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Валеев Рустам !
Так как БД у вас абстрактная, то ответ тоже будет немного абстрактным.
Многие компоненты для подключения к БД имеют свойсто типа Connected/Active. Многие "руководства рекомендуют ставить их включенными. Но лучше делать наоборот. Пока отлаживаете, да, можно делать их активными,а вот в релизной версии, надо их выключать. А сам код на проверку должен быть приблизительно таким

if fileexists('файлБД') then begin
  база.active := true;//Таким образом включаем все нужные таблицы, запросы.
end else begin
  ShowMessage('Базы нет, завершаю работу!');
  Application.MainForm.Close();
end;

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 9 сентября 2008, 15:53


Мини-форум вопроса

Всего сообщений: 7; последнее сообщение — 10 сентября 2008, 12:44; участников в обсуждении: 3.
Валеев Рустам

Валеев Рустам (статус: Посетитель), 9 сентября 2008, 16:20 [#1]:

База данных-Access. Можно ли как-нибудь проверить через конструкцию try except?Т.е. если попытка к подключению оказалась неудачной, то вывести определенное сообщение. И по какому событию должен генерироваться код проверки?
Вадим К

Вадим К (статус: Академик), 9 сентября 2008, 16:30 [#2]:

Дело в том, что подключение происходит в конструкторе, если свойство Connected = true и заключить в try except так просто не получиться.
Вы хотите вначале попытаться подключиться, и если не получилось, принимать решение. А почему не проверить вначале физически наличие файла БД и лишь после этого подключаться?
Галочка "подтверждения прочтения" - вселенское зло.
Валеев Рустам

Валеев Рустам (статус: Посетитель), 9 сентября 2008, 17:55 [#3]:

Проверка на физическое наличие файла БД трудности не производит.
Иное дело-попытаться подключиться. Пока не представляю, как можно отловить процесс подключения в конструкторе...
Вадим К

Вадим К (статус: Академик), 9 сентября 2008, 18:03 [#4]:

Ну если файл есть, то скорее всего всё подключиться.
а вот отлавливать остаток ошибок можно так
try
  ADOConnection1.Connected := true;
  ADOTable1.active := true;
except
 
end;
Галочка "подтверждения прочтения" - вселенское зло.
Валеев Рустам

Валеев Рустам (статус: Посетитель), 10 сентября 2008, 12:09 [#5]:

А по какому событию можно отлавливать остаток ошибки?
Вадим К

Вадим К (статус: Академик), 10 сентября 2008, 12:15 [#6]:

Каких ошибок?
Эта конструкция, которую я привёл, позволит перехватить все основные ошибки при подключении (да, синий экран она к сожалению перехватить не может).
Галочка "подтверждения прочтения" - вселенское зло.
Пупкин В.В.

Пупкин В.В. (статус: 1-ый класс), 10 сентября 2008, 12:44 [#7]:

Может поможет - Как сделать ADO-connection "http://www.delphisources.ru/pages/faq/base/make_ado_connection.html"

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:55
Выполнено за 0.02 сек.