powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как Фоксе проверить жив коннект к SQLServer или нет
9 сообщений из 9, страница 1 из 1
Как Фоксе проверить жив коннект к SQLServer или нет
    #32810225
Vaska_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коннекчусь к SQLServer по SQLSTRINGCONNECT, сервер далеко. Там отрубают свет или еще что-то.
На клиенте надо поставить какую-то проверку живости коннекта. Есть ли у Фокса что-нибудь родное для таких проверок?
...
Рейтинг: 0 / 0
Как Фоксе проверить жив коннект к SQLServer или нет
    #32810294
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй передать по коннекту пустую строку

Код: plaintext
1.
2.
IF SQLExec(<номер коннекта>,"") <  0 
* Коннект умер
ENDIF

А вообще-то, любая команда SQLExec() должна проверяться на предмет ошибки через AERROR(). Разрыв коннекта - это вполне определенный номер ошибки (для MS SQL, если не ошибаюсь - 1000)

Код: plaintext
1.
2.
3.
4.
5.
IF SQLExec(...) <  0 
	LOCAL laError( 1 )
	=AERROR(laError)
	* Анализ массива laError на предмет причины ошибки
	* одна из причин - разрыв коннекта
ENDIF
...
Рейтинг: 0 / 0
Как Фоксе проверить жив коннект к SQLServer или нет
    #32810325
Vaska_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В том то и дело, что ошибка возникает на стадии
...IF SQLExec(<номер коннекта>,"") < 0...
Пугает юзверей мессага англицкая :)
Вставлять везде ON ERROR не хочется, думал можа средство какое есть :)
...
Рейтинг: 0 / 0
Как Фоксе проверить жив коннект к SQLServer или нет
    #32810372
Vaska_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Типа вот так работает, но как-то не нравится мне ON ERROR
что-то вроде двойной проверки получается
ON ERROR MESSAGEBOX('Коннект умер')
IF SQLExec(gnHandle,"") < 0
....
ENDIF
ON ERROR
...
Рейтинг: 0 / 0
Как Фоксе проверить жив коннект к SQLServer или нет
    #32810492
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри настройку для твоего коннекта

?SQLGetProp(<номер коннекта>,"DispWarnings")

По умолчанию, эта настройка имеет значение .F. Но у тебя, видимо, она установлена в .T. Исправить это можно так:

?SQLSetProp(<номер коннекта>,"DispWarnings",.T.)

Если ты создавал объект Connection в базе данных, то открой его на модификацию и посмотри факт наличия птички в пункте "Display Warnings". Если она там проставлена, то сними ее.

Эта настройка как раз и отвечает за то, чтобы такие системные сообщения не отображались. Тогда ты спокойно перехватываешь ошибку через

IF SQLExec()<1

И даешь свое сообщение не пугая пользователя
...
Рейтинг: 0 / 0
Как Фоксе проверить жив коннект к SQLServer или нет
    #32811056
Vaska_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо попробую
...
Рейтинг: 0 / 0
Как Фоксе проверить жив коннект к SQLServer или нет
    #32811827
PaulWist_asGuest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторТипа вот так работает, но как-то не нравится мне ON ERROR
что-то вроде двойной проверки получается
ON ERROR MESSAGEBOX('Коннект умер')
IF SQLExec(gnHandle,"") < 0
....
ENDIF
ON ERROR

ON ERROR - не поможет, ошибка соединения - это ошибка не фокса, поэтому SQLEXEC и возвращает статус выполнения операции, а как определить текст и номер ошибки уже пояснили.
...
Рейтинг: 0 / 0
Как Фоксе проверить жив коннект к SQLServer или нет
    #32813859
Vaska_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot ON ERROR - не поможет, ошибка соединения - это ошибка не фокса[/quot]
Сначала всегда вякнет Фокс. Можешь проверить сам. Приконектись к SQL а потом соску сетевую выдерни. Посмотри что у тебя вякнет первым :) Вот в данном случае ON ERROR поможет
...
Рейтинг: 0 / 0
Как Фоксе проверить жив коннект к SQLServer или нет
    #32818252
PaulWist_asGuest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторСначала всегда вякнет Фокс. Можешь проверить сам.

На самом деле ВладимирМ уже ответил двумя постами выше. Тем не менее мог бы сам слепить примерчик и посмотреть на результат.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
PUBLIC HND
ServerName = 'YouServerName'
dbName = 'NorthWind'
UserName = 'sa'
PassWord = 'YouPass'

m.ConString="Driver={SQL Server};SERVER=" +ServerName+ ;  
        ";Database=" +dbName+ ;  
        ";Uid=" +UserName+ ";Pwd=" +PassWord+ ";" 
        
hnd =  SQLSTRINGCONNECT(m.ConString)

SQLSETPROP(hnd,"DispWarnings",.f.)

? "-- With Connect"
?SQLEXEC(HND, "Select @@Version", "TmpVersion")

* Вынимаем "шнурок" сети и пытаемся выполнить

? "-- Not Connect"
?SQLEXEC(HND, "Select @@Version", "TmpVersion")

?SQLDISCONNECT(HND)

Как видишь фокс не обработал ошибку разрыва соединеия (за исключением возврата статуса выполнения SQLEXEC), то фокс ни сном ни духом не знает, что же произошло с соединеием
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как Фоксе проверить жив коннект к SQLServer или нет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]