Главная страница
    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.006 c
15-1237481049
Riply
2009-03-19 19:44
2009.05.24
Наличие ZwCreateNamedPipeFile в Vista и 7- ке.


2-1239262531
kyn66
2009-04-09 11:35
2009.05.24
Проверка открытия базы на сервере


6-1203266485
Lamer666
2008-02-17 19:41
2009.05.24
Отправка писем с локальной машины прямо на почтовые ящики


15-1236634211
Юрий
2009-03-10 00:30
2009.05.24
С днем рождения ! 10 марта 2009 вторник


11-1200709306
Jon
2008-01-19 05:21
2009.05.24
Binary search





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский