Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.05.24;
Скачать: CL | DM;

Вниз

Проверка открытия базы на сервере   Найти похожие ветки 

 
kyn66 ©   (2009-04-09 11:35) [0]

Уважаемые мастера, технология программы следующая.  Есть главная форма, есть  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; ?

Спасибо.


 
Ega23 ©   (2009-04-09 12:06) [1]

Всё некореектно. Блин, писАть очень много. Если вкртце:
1. Создал DM, проверил коннект, если не так, то главная форма НЕ СОЗДЁТСЯ.
2. Параметры коннект - логин, пароль пользователь должен иметь возможность ввести сам.
3. Не знаю, что такое TAdsConnection, но могу по опыту работы с другими DAC  предположить, что полная проверка валидности коннекта будет достигнута только тогда, когда у тебя пройдёт запрос к КОНКРЕТНОЙ БД на конкретном сервере под конкретной учётной записью. Т.е. сделать что-то типа select 1 и обернуть в try..except


 
kyn66 ©   (2009-04-09 12:35) [2]

В данном случае сервер - обчное файлохранилище. Подключение к БД происходит посредством компонента AdsConnection1.AdsServerTypes := Local  (Advantage Database Server --> ADS) AdsConnection1.ConnectPath := "пишу всякую ерунду" , IsConnected получает значение True. Почему не понятно. Дело в том, что у этого компонента есть ряд событий, но нету типа onConnectError. Этим все усложняется.


 
Ega23 ©   (2009-04-09 13:27) [3]

см. пункт 3.


 
kyn66 ©   (2009-04-09 15:30) [4]

Да не работает это ни фига. Не понятно что в этот блок вставлять нужно.
AdsConnection1.IsConnected - Trye дает при любом раскладе, хоть кривой путь пишу ConnectPath. Неужели никто не работал с этими компанентами? Не верицца шота.


 
Ega23 ©   (2009-04-09 15:47) [5]


> Неужели никто не работал с этими компанентами?


Если их нет в стандртной поствке - то сомнительно, чтобы кто-то ими пользовался.


 
Anatoly Podgoretsky ©   (2009-04-09 16:08) [6]


> Ega23 ©   (09.04.09 15:47) [5]

Вообще то надежда есть, ADS довольно известная СУБД
Но с "Тут-то и вылетает ошибка." надежды мало.


 
Ega23 ©   (2009-04-09 16:16) [7]


> Вообще то надежда есть, ADS довольно известная СУБД


9 лет базами занимаюсь - первый раз слышу. Честно.
Как о СУБД, так и о DAC


 
Anatoly Podgoretsky ©   (2009-04-09 16:23) [8]

> Ega23  (09.04.2009 16:16:07)  [7]

По памяти Это сокращение от Advanced Dataset если я не ошибаюсь.


 
Amoeba ©   (2009-04-09 16:52) [9]

Случаем не Advantage Database Server?


 
Anatoly Podgoretsky ©   (2009-04-09 16:56) [10]

Оно


 
Плохиш ©   (2009-04-09 18:47) [11]


> kyn66 ©   (09.04.09 15:30) [4]
>
> Да не работает это ни фига.

Только что проверил, при мусоре в ConnectPath, генерится исключение на Connect.
Вывод: тебе не повезло.


 
Игорь Шевченко ©   (2009-04-09 20:17) [12]


> Вывод: тебе не повезло.


причем дважды


 
Юрий Зотов ©   (2009-04-09 20:38) [13]

> 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:39) [14]

not - убрать

if DM1.AdsConnection1.IsConnected then...


 
kyn66 ©   (2009-04-10 09:27) [15]

2Плохиш

> Только что проверил, при мусоре в ConnectPath, генерится
> исключение на Connect. Вывод: тебе не повезло.


Что значит не повезло? Барабашка что-ли у меня в дельфе? Я думаю здесь не очень хочется кого-то вводить в заблуждение шутками. Вопрос довольно серьезный. Ведь здесь Connect - процедура и ничего не возвращает, типа результата коннекта.


 
kyn66 ©   (2009-04-10 09:29) [16]


> 9 лет базами занимаюсь - первый раз слышу. Честно.Как о
> СУБД, так и о DAC


Давно известная СУБД, применяю для исключения использования BDE. http://www.hotsoft.ru/ADS/


 
kyn66 ©   (2009-04-10 09:36) [17]

2Юрий Зотов Сейчас проверю, но хочу сказать, здесь вроде не описал, что AdsConnection1.Connect; банально переводит AdsConnection1.IsConnected в True.  В королевстве задал этот-же вопрос с приведением задействованных частей кода модуля http://www.delphikingdom.com/asp/answer.asp?IDAnswer=69852


 
kyn66 ©   (2009-04-10 09:48) [18]

2Юрий Зотов, нет, не работает код. Тоько что проверил. AdsConnection1.IsConnected при любом раскладе изначально принимает значение True и хоть тресни. СМ. [17]


> Плохиш ©   (09.04.09 18:47) [11]

> Только что проверил, при мусоре в ConnectPath, генерится
> исключение на Connect. Вывод: тебе не повезло.


Можно на код проверки глянуть? Что я не так делаю при проверке?


 
kyn66 ©   (2009-04-13 09:47) [19]

2Плохиш ©

> > Плохиш ©   (09.04.09 18:47) [11]> Только что проверил,
>  при мусоре в ConnectPath, генерится > исключение на Connect.
>  Вывод: тебе не повезло.


Решил продублировать, недождавшись ответа. Хотелось-бы увидеть как генерится исключение или это просто громкие фразы в форум?


 
Anatoly Podgoretsky ©   (2009-04-13 11:17) [20]

Исключения генерятся в компоненте и надо иметь текст компонент, чтобы показать как оно генерится. Для этого надо будет изучить этот код и возможно протрассировать. В программе же ничего делать не требуется, выскочит сообщение об исключение, если оно не замаскировано. Ну и конечно изучить работу компонент. А так как людей использующих данный компонент ничтожно мало, то можно долго, долго ждать ответа, а кода с проверкой на исключение не приведено. Конечно если данный метод вырабатывает исключения вообще, а не просто отражает последнее действие над компонентом.


 
kyn66 ©   (2009-04-14 10:19) [21]

Связывался с авторами, сказали что данный компонент не должен проверять правильность вееденной строки. Он просто якобы соединяется с сервером и все. А доступ к БД типа самим нужно предусмотреть, чтобы был корректным. Короче, дело темное...


 
Anatoly Podgoretsky ©   (2009-04-14 10:55) [22]


> а не просто отражает последнее действие над компонентом.



Страницы: 1 вся ветка

Текущий архив: 2009.05.24;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.012 c
3-1221456538
checkmate-maker
2008-09-15 09:28
2009.05.24
ODAC. Параметризованные запросы.


2-1239177864
JB2
2009-04-08 12:04
2009.05.24
Строку в список


2-1239102808
Alexandra
2009-04-07 15:13
2009.05.24
Locate и поиск далее..


2-1239124156
Dima88
2009-04-07 21:09
2009.05.24
Вызов процедуры Oracle


15-1237897102
Я
2009-03-24 15:18
2009.05.24
Выключение компа