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


Форумы  :: FAQ FoxPro

Как подавить выдачу системного окна настройки соединения в случае ошибки
Дата: 24.02.06 18: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-серверами 5174 Владимир Максимов 24.02.06 17:19
  Как определить причину ошибки 6411 Владимир Максимов 24.02.06 17:42
  Как подавить выдачу системного окна настройки соединения в случае ошибки 5803 Владимир Максимов 24.02.06 18:13
  Как вызвать хранимую процедуру сервера 5985 Владимир Максимов 24.02.06 18:33
  Как передать параметры в хранимую процедуру сервера 6325 Владимир Максимов 24.02.06 18:44
  Как получить значение выходного параметра процедуры сервера 6088 Владимир Максимов 24.02.06 18:57
  Как получить значение функции сервера 5235 Владимир Максимов 24.02.06 19:11
  Почему возвращается только часть числа. Первые символы 4125 Владимир Максимов 06.01.10 15:39


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

On-line: 41 Simple777 Дмитрий Петров  and Guests: 39


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