MS Access VBA捕获SQL Server连接错误

时间:2012-02-04 13:11:52

标签: sql-server-2008 ms-access odbc dao ms-access-2010

我在访问Access(2010)VBA以捕获与SQL Server(2008)的连接错误时遇到问题,无法链接表。

我收到错误并弹出窗口,大概来自ODBC驱动程序?我想压制这些并自己处理错误。我知道DAO.errors和ADO.errors集合,但如果我无法得到错误来调用我的错误处理程序,这些都无济于事!

下面的代码将给出错误(除非您在名为myServer的服务器上名为myDatabase的数据库中碰巧有一个名为myTable的表)。 我试过使用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 :(得分:0)

在尝试附加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