:: Главная :: Решения :: Статьи :: Проект "Русский help" :: Файловый архив :: Фотоальбом :: Ссылки ::
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  


Форумы  :: FAQ FoxPro

Как подавить выдачу системного окна настройки соединения в случае ошибки
Дата: 24.02.06 19:13:07 ОтветитьЦитировать

Вопрос

Я настриваю соединение программно через команду SQLConnect() или команду SQLStringConnect(). В случае ошибки создания соединения возникает системное окно для настройки реквизитов соединения. Как можно подавить выдачу этого окна, просто выдав пользователю сообщение об ошибке?

Ответ

Если Вы используете для создания соединения объект Connection базы данных, то откройте этот объект на редактирование и сделайте следующие настройки:


  1. В разделе "Display ODBC login prompts" установите переключатель в положение "Never"
  2. Убедитесь, что в разделе "Data Procesing" переключатель "Display Warnings" выключен


Если Вы настраиваете соединение исключительно программными средствами, то установить нужные значения этих настроек можно, используя функцию SQLSetProp(). Это настройки DispLogin и DispWarnings.

Однако, как видно из синтаксиса функции SQLSetProp(), она делает настройки для конкретного соединения. Первым параметром идет номер уже созданного соединения. Но ведь соединения еще нет. Его только собираются создать.

Чтобы преодолеть это противоречие, используют соединение с номером 0. Физически - это вообще не соединение. По сути, это будут настройки для любого нового соединения, поскольку номером 0 обозначают первое не занятое значение номера соединения. На уже созданные соединения эти настройки не распространяются.

Получается примерно такой код:

* Сохранение текущих значений настроек
LOCAL llDispWarning, lnDispLogin
llDispWarning=SQLGetProp(0,'DispWarning')
lnDispLogin=SQLGetProp(0,'DispLogin')
* Установка этих настроек в значения, препятствующие выдаче системных сообщений
SQLSetProp(0,'DispWarning',.F.)
SQLSetProp(0,'DispLogin',3)
* Формируем строку соединения для MS SQL сервера
LOCAL lcStringConnect
lcStringConnect='DRIVER=SQL Server;'+;
'SERVER=Имя_Сервера;'+;
'UID=Логин_Пользователя;'+;
'PWD=Пароль_Пользователя;'+;
'DataBase=Имя_базы_данных'
* Собственно попытка создания соединения
lnNewConnection = SQLStringConnect(m.lcStringConnect)
IF m.lnNewConnection <= 0
* Произошла ошибка в момент установки соединения. Выясняем причину
LOCAL laError(1)
=AERROR(laError)
* Анализ массива laError для уточнения причины ошибки
ELSE
* Соединение успешно установлено
* и его номер записан в переменную lnNewConnection
ENDIF
* Восстановление исходных настроек
SQLSetProp(0,'DispWarning',m.llDispWarning)
SQLSetProp(0,'DispLogin',m.lnDispLogin)

В принципе, значение настройки DispWarning и так по умолчанию равно .F. Здесь это делается на всякий случай
Ratings: 0 negative/0 positive


Тема Просмотров Написано Написано
  Работа с удаленными данными, SQL-серверами 5834 Владимир Максимов 24.02.06 18:19
  Как определить причину ошибки 7112 Владимир Максимов 24.02.06 18:42
  Как подавить выдачу системного окна настройки соединения в случае ошибки 6640 Владимир Максимов 24.02.06 19:13
  Как вызвать хранимую процедуру сервера 6657 Владимир Максимов 24.02.06 19:33
  Как передать параметры в хранимую процедуру сервера 7169 Владимир Максимов 24.02.06 19:44
  Как получить значение выходного параметра процедуры сервера 6866 Владимир Максимов 24.02.06 19:57
  Как получить значение функции сервера 5962 Владимир Максимов 24.02.06 20:11
  Почему возвращается только часть числа. Первые символы 5392 Владимир Максимов 06.01.10 16:39


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 1 (Гостей: 1)

© 2006 Fox Club 
Яндекс.Метрика