|
Вопрос # 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"
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|