![]() |
| ||
|
|
Новости |
Поиск |
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;?
Спасибо.
Anatoly Podgoretsky (2009-04-14 10:55:00) [1]
> а не просто отражает последнее действие над компонентом.
kyn66 (2009-04-14 10:19:00) [2]Связывался с авторами, сказали что данный компонент не должен проверять правильность вееденной строки. Он просто якобы соединяется с сервером и все. А доступ к БД типа самим нужно предусмотреть, чтобы был корректным. Короче, дело темное...
Anatoly Podgoretsky (2009-04-13 11:17:00) [3]Исключения генерятся в компоненте и надо иметь текст компонент, чтобы показать как оно генерится. Для этого надо будет изучить этот код и возможно протрассировать. В программе же ничего делать не требуется, выскочит сообщение об исключение, если оно не замаскировано. Ну и конечно изучить работу компонент. А так как людей использующих данный компонент ничтожно мало, то можно долго, долго ждать ответа, а кода с проверкой на исключение не приведено. Конечно если данный метод вырабатывает исключения вообще, а не просто отражает последнее действие над компонентом.
kyn66 (2009-04-13 09:47:00) [4]2Плохиш ©
> > Плохиш © (09.04.09 18:47) [11]> Только что проверил,
> при мусоре в ConnectPath, генерится > исключение на Connect.
> Вывод: тебе не повезло.
Решил продублировать, недождавшись ответа. Хотелось-бы увидеть как генерится исключение или это просто громкие фразы в форум?
kyn66 (2009-04-10 09:48:00) [5]2Юрий Зотов, нет, не работает код. Тоько что проверил. AdsConnection1.IsConnectedпри любом раскладе изначально принимает значение Trueи хоть тресни. СМ. [17]
> Плохиш © (09.04.09 18:47) [11]
> Только что проверил, при мусоре в ConnectPath, генерится
> исключение на Connect. Вывод: тебе не повезло.
Можно на код проверки глянуть? Что я не так делаю при проверке?
kyn66 (2009-04-10 09:36:00) [6]2Юрий ЗотовСейчас проверю, но хочу сказать, здесь вроде не описал, что AdsConnection1.Connect;банально переводит AdsConnection1.IsConnectedв True. В королевстве задал этот-же вопрос с приведением задействованных частей кода модуля http://www.delphikingdom.com/asp/answer.asp?IDAnswer=69852
kyn66 (2009-04-10 09:29:00) [7]
> 9 лет базами занимаюсь - первый раз слышу. Честно.Как о
> СУБД, так и о DAC
Давно известная СУБД, применяю для исключения использования BDE. http://www.hotsoft.ru/ADS/
kyn66 (2009-04-10 09:27:00) [8]2Плохиш
> Только что проверил, при мусоре в ConnectPath, генерится
> исключение на Connect. Вывод: тебе не повезло.
Что значит не повезло? Барабашка что-ли у меня в дельфе? Я думаю здесь не очень хочется кого-то вводить в заблуждение шутками. Вопрос довольно серьезный. Ведь здесь Connect - процедура и ничего не возвращает, типа результата коннекта.
Юрий Зотов (2009-04-09 20:39:00) [9]not - убрать
if DM1.AdsConnection1.IsConnected then...
Юрий Зотов (2009-04-09 20:38:00) [10]> kyn66 © (09.04.09 11:35)
begin
Application.Initialize;
Application.Title := 'трям-трям';
Application.CreateForm(TDM1, DM1);
if not DM1.AdsConnection1.IsConnected then
try
Application.CreateForm(TMainFrm, MainFrm);
Application.Run
finally
DM1.Free
end
end.
procedure TDM1.DataModuleCreate(Sender: TObject);
begin
AdsConnection1.Connect
end;
procedure TDM1.DataModuleDestroy(Sender: TObject);
begin
AdsConnection1.Disconnect
end;
Игорь Шевченко (2009-04-09 20:17:00) [11]
> Вывод: тебе не повезло.
причем дважды
Плохиш (2009-04-09 18:47:00) [12]
> kyn66 © (09.04.09 15:30) [4]
>
> Да не работает это ни фига.
Только что проверил, при мусоре в ConnectPath, генерится исключение на Connect.
Вывод: тебе не повезло.
Anatoly Podgoretsky (2009-04-09 16:56:00) [13]Оно
Amoeba (2009-04-09 16:52:00) [14]Случаем не Advantage Database Server?
Anatoly Podgoretsky (2009-04-09 16:23:00) [15]> Ega23 (09.04.2009 16:16:07) [7]
По памяти Это сокращение от Advanced Dataset если я не ошибаюсь.
Ega23 (2009-04-09 16:16:00) [16]
> Вообще то надежда есть, ADS довольно известная СУБД
9 лет базами занимаюсь - первый раз слышу. Честно.
Как о СУБД, так и о DAC
Anatoly Podgoretsky (2009-04-09 16:08:00) [17]
> Ega23 © (09.04.09 15:47) [5]
Вообще то надежда есть, ADS довольно известная СУБД
Но с "Тут-то и вылетает ошибка." надежды мало.
Ega23 (2009-04-09 15:47:00) [18]
> Неужели никто не работал с этими компанентами?
Если их нет в стандртной поствке - то сомнительно, чтобы кто-то ими пользовался.
kyn66 (2009-04-09 15:30:00) [19]Да не работает это ни фига. Не понятно что в этот блок вставлять нужно.
AdsConnection1.IsConnected- Trye дает при любом раскладе, хоть кривой путь пишу ConnectPath. Неужели никто не работал с этими компанентами? Не верицца шота.
Ega23 (2009-04-09 13:27:00) [20]см. пункт 3.