Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проверка открытия базы на сервере [D7, ADS]


Страницы:   1 2

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.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо