Конференция "Базы" » как поймать ошибку соединения с сервером MS SQL [MSSQL]
 
  • peshexod © (21.09.13 16:52) [0]
    Есть программа, работающая с бд MS SQL. Все компоненты для работы с базой собраны в DataModule. Соединение с помощью TADOConnection. При старте все соединения закрыты. ConnectionString создается динамически в процедуре DataModuleCreate, потом открывается соединение. Ошибки соединения обрабатываются в try...except. Когда сервер доступен, все работает. Но если при старте программы сервер недоступен, вылетает ошибка "сервер недоступен или отказано в доступе". Причем вылетает она после начала создания DataModule, но до начала выполнения процедуры DataModuleCreate. Как эту ошибку отловить?
  • sniknik © (21.09.13 20:16) [1]
    > Причем вылетает она после начала создания DataModule, но до начала выполнения процедуры DataModuleCreate.
    вот тут оно вылетает,
    procedure TDataModule.AfterConstruction;
    begin
     if not OldCreateOrder then DoCreate;
    end;
    и зависит от параметра на форме OldCreateOrder, поставь тру будет вылетать в Create...

    но вообще, ИМХО, не хорошо открывать конект к базе в создании форм... форма то (/двтамодуль) сама нужна, если конект не открыт? похоже да, раз ждешь продолжения работы. выдели соединение в отдельную процедуры, типа инициализации, и вызывай после создания.
  • peshexod © (22.09.13 10:44) [2]
    Спасибо, попробую. Программа может коннектиться к серверу по умолчанию или к другому, указанному в настройках. Сначала она пытается коннектиться к этому другому, а если его нет -тогда по умолчанию. Поэтому и решил открывать коннект при создании датамодуля. Если не найден и сервер по умолчанию, программа закрывается вообще, послав сообщение об ошибке. Но получается, что она начинает искать сервер до того, как ей сказали , где искать...
  • Плохиш © (22.09.13 11:17) [3]
    Перед компиляцией программы надо установить свойство Connected в false. Тогда программа будет вести себя так как хотелось кодеру.
  • peshexod © (22.09.13 11:54) [4]
    поставил OldCreateOrder true, ничего не изменилось.
  • peshexod © (22.09.13 11:58) [5]
    Плохиш, ну не совсем же я дятел. Конечно, connected стоит в false, там и connectionstring не прописаны, они динамически создаются после чтения настроек.
  • peshexod © (22.09.13 13:19) [6]
    Нашел корень зла. В свойствах компонентов ADOConnection, хотя и не были прописаны connectionstring, но в свойстве provider осталось sqloledb. Поменял его на Microsoft.Jet.OLEDB.4.0 и проблема решилась, программа перестала на старте искать sql сервер. Всем спасибо за внимание.
 
Конференция "Базы" » как поймать ошибку соединения с сервером MS SQL [MSSQL]
Есть новые Нет новых   [119921   +134][b:0][p:0]