Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.05.24;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.009 c
2-1239014028
Roman88
2009-04-06 14:33
2009.05.24
Определить наличие процедуры


2-1238999216
Дмитрий
2009-04-06 10:26
2009.05.24
Помогите обработать HResult


15-1237993387
Showmessage
2009-03-25 18:03
2009.05.24
Матрица


2-1239278888
Kolan
2009-04-09 16:08
2009.05.24
Умный поиск по БД вместо фильтрации. Как реализовать?


2-1239395171
Johnnnnn
2009-04-11 00:26
2009.05.24
Строка или текст через clipboard , незнаю как правильно.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский