【发布时间】:2012-02-26 19:22:51
【问题描述】:
我在让 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
【问题讨论】:
-
如果我正确理解了这个问题,一个简单的方法是创建一个通用错误处理子程序,该子程序在错误号上使用 select 语句来处理引发的错误,您还可以记录错误 @987654321 @ 基本上
Err_handler:标签/块将调用此例程传递任何参数等,但它取决于它是否是on error goto正在被调用
标签: sql-server-2008 ms-access odbc dao ms-access-2010