:: Главная :: Решения :: Статьи :: Проект "Русский 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-серверами 5214 Владимир Максимов 24.02.06 17:19
  Как определить причину ошибки 6459 Владимир Максимов 24.02.06 17:42
  Как подавить выдачу системного окна настройки соединения в случае ошибки 5867 Владимир Максимов 24.02.06 18:13
  Как вызвать хранимую процедуру сервера 6044 Владимир Максимов 24.02.06 18:33
  Как передать параметры в хранимую процедуру сервера 6380 Владимир Максимов 24.02.06 18:44
  Как получить значение выходного параметра процедуры сервера 6151 Владимир Максимов 24.02.06 18:57
  Как получить значение функции сервера 5305 Владимир Максимов 24.02.06 19:11
  Почему возвращается только часть числа. Первые символы 4207 Владимир Максимов 06.01.10 15:39


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

On-line: 33 and Guests: 33


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