Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > ADOConnection проверка подключения


Автор: LexuSS 17.11.2009, 16:28
Пишу программу для работы с базами данных, основная база SQL-сервер (по умолчанию) и дополнительная база в Аccess. Если сервер не доступен то работать программа должна с локальной базой.
Как проверить что SQL-сервер не доступен?

Автор: Данкинг 17.11.2009, 17:08
Ошибку подключения отловить, видимо.

Автор: Akella 17.11.2009, 18:00
Возможно, что есть событие OnDisconnect или OnLostConnect в компонентах доступа.

Автор: cemick 17.11.2009, 18:11
Выполнить какойнибудь простейший запрос что то типо 

Код

select 1 as id from dual 


в блоке try except end

Автор: Akella 17.11.2009, 21:51
cemick, а если в базе не будет такой таблицы или ещё что-нибудь? Лучше отлавливать именно событие потери соединения.

Автор: LexuSS 18.11.2009, 07:35
Мне нужно узнать возможно ли такое соединение или нет до его установки

Автор: Акимыч 18.11.2009, 14:12
Код

procedure TLoginForm.btnServerListRefreshClick(Sender: TObject);
var
  dmo: Variant;
  i: Integer;
begin
  try
    Screen.Cursor:= crHourGlass;
    dmo:=CreateOleObject('SQLDMO.Application');
    for i:=0 to dmo.ListAvailableSQLServers.Count do
      if (Length(trim(dmo.ListAvailableSQLServers.Item(i))) > 0) and
        (CompareText(AnsiUpperCase(dmo.ListAvailableSQLServers.Item(i)),'(LOCAL)')<>0) then
          cbbServerName.Items.Add(AnsiUpperCase(dmo.ListAvailableSQLServers.Item(i)));
    Screen.Cursor:= crDefault;
  except
    on e: Exception do
    begin
      Application.MessageBox(PChar('Нет доступа к SQL-серверу. Обратитесь к администратору.'),'Обновление списка серверов',48);
      ErrLOG('TLoginForm.btnServerListRefreshClick',e.Message,'','',Sender);
      Screen.Cursor:= crDefault;
    end;
  end;
end;


возвращает список доступных для подключения в сети серверов

Автор: former 18.11.2009, 15:29
Цитата(LexuSS @  18.11.2009,  07:35 Найти цитируемый пост)
Мне нужно узнать возможно ли такое соединение или нет до его установки 

А почему не использовать конструкцию try ... except ... end при подключении.

Автор: LexuSS 18.11.2009, 16:19
Акимыч, Спасибо, давно хотел что нибудь подобное написать!
Всё заработало.

Автор: Акимыч 19.11.2009, 11:01
LexuSS, да не за что, тока вопрос отметь как решенный!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)