MS Access VBA перехват SQL Server Ошибка подключения - PullRequest
0 голосов
/ 04 февраля 2012

У меня проблемы с получением Access (2010) VBA для перехвата ошибок для соединений с SQL Server (2008) для связывания таблиц.

Я получаю сообщения об ошибках и всплывающие окна, предположительно из ODBCВодитель?Я хочу подавить их и устранить ошибку самостоятельно.Я знаю о коллекциях DAO.errors и ADO.errors, но они не помогают, если я не могу заставить ошибку вызвать мой обработчик ошибок!

Приведенный ниже код выдаст ошибку (если только вы неиметь таблицу с именем myTable в базе данных с именем myDatabase на сервере с именем myServer).Я пытался использовать ADODB, а не DAO, но не смог заставить это работать вообще.Есть идеи?

Public Function main()
    Dim myDB As DAO.Database
    Dim myTabledef As DAO.TableDef

    On Error GoTo Err_handler

    Set myDB = CurrentDb
    Set myTabledef = myDB.CreateTableDef("l_table")

    DoCmd.SetWarnings False

    myTabledef.Connect = "odbc;driver=SqLServer;" & _
        "DATABASE=myDB;SERVER=myServer;Trusted_Connection=Yes;"

    myTabledef.SourceTableName = "MyTable"

    myDB.TableDefs.Append myTabledef

    DoCmd.SetWarnings True

    Exit Function

Err_handler:
    MsgBox Err.Number & " - " & Err.Description

End Function

Я допустил ошибку в опубликованном коде {Sql Server} стал SqLServer, когда я его опубликовал.Таким образом, полный код, который дает ошибку ниже:

Public Function main()
Dim myDB As DAO.Database
Dim myTabledef As DAO.TableDef

On Error GoTo Err_handler

Set myDB = CurrentDb
Set myTabledef = myDB.CreateTableDef("l_table")

DoCmd.SetWarnings False

myTabledef.Connect = "odbc;driver={Sql Server};" & _
    "DATABASE=myDB;SERVER=myServer;Trusted_Connection=Yes;"

myTabledef.SourceTableName = "MyTable"

myDB.TableDefs.Append myTabledef

DoCmd.SetWarnings True

Exit Function

Err_handler:
MsgBox Err.Number & " - " & Err.Description

End Function

1 Ответ

0 голосов
/ 04 февраля 2012

Ошибка не возникнет, пока вы не попытаетесь добавить TableDef

Dim myDB As DAO.Database
Dim myTabledef As DAO.TableDef

On Error GoTo Err_handler

Set myDB = CurrentDb
scn = "odbc;driver=SqLServer;" & _
"DATABASE=myDB;SERVER=myServer;Trusted_Connection=Yes;"
Set myTabledef = myDB.CreateTableDef("l_table")

myTabledef.Connect = scn
myTabledef.SourceTableName = "Table1"
myDB.TableDefs.Append myTabledef

Err_handler:
Debug.Print Err.Number & " " & Err.Description
...