Форум: "Начинающим";
Текущий архив: 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