![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проверка открытия базы на сервере [D7, ADS]
kyn66 © (2009-04-09 11:35:00)Уважаемые мастера, технология программы следующая. Есть главная форма, есть Data Module, в котором находится компонент TAdsConnection. выдержка из проекта
begin
Application.Initialize;
Application.Title := 'трям-трям';
Application.CreateForm(TDM1, DM1);
Application.CreateForm(TMainFrm, MainFrm);
Application.Run;
end.
Содержимое DM
.......
procedure TDM1.DataModuleCreate(Sender: TObject);
begin
AdsConnection1.Connect;
if not AdsConnection1.IsConnected then
begin
ShowMessage('Not Connected');
Application.Terminate;
end;
end;
procedure TDM1.DataModuleDestroy(Sender: TObject);
begin
AdsConnection1.Disconnect;
end;
....
В данном последнем коде я пытаюсь соедениться с БД, затем проверяю, произошло-ли действительно соединение. Путь к БД специально указываю неверный. Проходит некоторое время... База не открылась, точнее Connect не произошол, однако в режиме отладки следующая проверка AdsConnection1.IsConnectedпринимает значение True. Почему? Ведь при подключении произошла ошибка, точнее подключения не произошло. Следовательно прога идет выполняться дальше, открывается главная форма, в которой происходит открытие таблиц и прочее. Тут-то и вылетает ошибка. Почему при проверке на подключение прога не вывалила Application.Terminate;?
Спасибо.
kyn66 (2009-04-09 12:35:00) [21]В данном случае сервер - обчное файлохранилище. Подключение к БД происходит посредством компонента AdsConnection1.AdsServerTypes := Local (Advantage Database Server --> ADS) AdsConnection1.ConnectPath := "пишу всякую ерунду" , IsConnected получает значение True. Почему не понятно. Дело в том, что у этого компонента есть ряд событий, но нету типа onConnectError. Этим все усложняется.
Ega23 (2009-04-09 12:06:00) [22]Всё некореектно. Блин, писАть очень много. Если вкртце:
1. Создал DM, проверил коннект, если не так, то главная форма НЕ СОЗДЁТСЯ.
2. Параметры коннект - логин, пароль пользователь должен иметь возможность ввести сам.
3. Не знаю, что такое TAdsConnection, но могу по опыту работы с другими DAC предположить, что полная проверка валидности коннекта будет достигнута только тогда, когда у тебя пройдёт запрос к КОНКРЕТНОЙ БД на конкретном сервере под конкретной учётной записью. Т.е. сделать что-то типа select 1 и обернуть в try..except