![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не регистрируется подключение [IB6.x]
Valkyre © (2007-05-26 21:54:00)Делаю так, как указано ниже. Но при реальном восстановлении линка продолжаются "попытки подключения", а соединение с БД не устанавливается. В чем может быть проблема?
procedure TcfmConnectFail.DoClick(Sender: TObject);
begin
if rbClose.Checked then begin
if not DbConnected then begin
Halt; Exit;
end else ModalResult := mrCancel;
end else begin
Timer1.Enabled := True;
EncartaButton1.Enabled := False;
rbClose.Enabled := False;
rbLock.Enabled := False;
btnClose.Enabled := False;
while not DbConnected do begin
Application.ProcessMessages;
dmGlobal.ibDatabase.Connected := True;
end;
ModalResult := mrCancel;
end;
end;
Valkyre (2007-05-29 09:32:00) [1]надо бороться за отказоустойчивость сервера
А если линк пропал в инете?
и зачем тебе еще таймер там понадобился ?
Тупо мигает Label :)
Dilmo (2007-05-27 13:52:00) [2]А как выглядит это "не получается" ???
и зачем тебе еще таймер там понадобился ?
sinus (2007-05-27 11:44:00) [3]зайди на www.ibase.ru там была статья как обрабатывать разрыв соединения с сервером..
по теории не надо бороться с разрывом связи, надо бороться за отказоустойчивость сервера
Valkyre (2007-05-27 09:34:00) [4]Пишу программу, работающую с СУБД Firebird (IB6).
Цель на данном этапе
Отработать ситуацию с потерей соединения клиентской части с сервером,
например, при потере линка на сетевой карте или просто падении сервера.
Выполненные шаги
При потере соединения ( проверка выполняется методом TIbDatabase.TestConnected)
открывается форма, которая содержит:
- 2 Radiobutton
- 1 TEncartaButton (TButton с графическим оформлением)
- несколько ничего не значащих Label'ов
- TTimer с интервалом 1 секунда
На форме пользователю предлагается выбрать один из двух вариантов:
завершить работуили ожидать восстановления подключения.
В первом случае при нажатии кнопки приложение закрывает соединение
(если это возможно) и завершает работу.
Во втором случае непрерывно выполняется цикл
while not DbConnected do begin
Application.ProcessMessages;
dmGlobal.ibDatabase.Connected := True;
end;
procedure DbConnected: Boolean;
Result := dmGlobal.ibDatabase.TestConnected;
end;
dmGlobal - TDataModule, ibDatabase - TIbDatabase
Метод подключения - TCP
По идее, при выполнении цикла должны выполняться попытки подключения к серверу
методом ibDatabase.Connected := True;но, к сожалению,
у меня ничего не получается.
Вопрос
Как можно грамотно организовать обработку потери соединения?
Виталий Панасенко(дом) (2007-05-26 22:40:00) [5]
> Johnmen © (26.05.07 22:28) [7]
>
> Нет, не подскажу. Ибо ничего не понял. Это во-первых.
> А во-вторых, не помогаю утопающим, которые сами решили утонуть.
> Это их священный выбор....
>
згоден
Johnmen (2007-05-26 22:28:00) [6]Нет, не подскажу. Ибо ничего не понял. Это во-первых.
А во-вторых, не помогаю утопающим, которые сами решили утонуть. Это их священный выбор....
Valkyre (2007-05-26 22:25:00) [7]Говорю ж - не дописал. Время много, спать хочу, проект завтра сдавать, а вот такая вот шиша...
Вы не подскажете, что бы это могло быть? :-[
Johnmen (2007-05-26 22:24:00) [8]Замечательно...
Осталось найти несколько разичий. :)))
TestConnectиTestConnected
Valkyre (2007-05-26 22:17:00) [9]
TIBDatabase.TestConnected Method
Tests whether a database is connected.
Class
TIBDatabase
Syntax
[Delphi] function TestConnected(): Boolean;
Description
Use TestConnected to determine whether a database is connected to the server. TestConnected returns true if the connection is good, and false if it is not.
Вот :) Не дописал. Извиняюсь.
Johnmen (2007-05-26 22:15:00) [10]
> Так яснее?:)
Не очень....
Что тако TestConnect?
Valkyre (2007-05-26 22:05:00) [11]TcfmConnectFail - GUI форма
DoClick - процедура ответа на клик по кнопке "OK"
DbConnected - dmGlobal.IbDatabase.TestConnect;
Так яснее?:)
Johnmen (2007-05-26 21:59:00) [12]Осталось выяснить, что такое TcfmConnectFail, DoClick, DbConnected и т.д....