Sql server 在MS Access中获取完整的SQL Server消息

Sql server 在MS Access中获取完整的SQL Server消息,sql-server,vba,ms-access,error-handling,sql-server-2014,Sql Server,Vba,Ms Access,Error Handling,Sql Server 2014,我正在将我们从MS Access 2007后端过渡到SQL Server 2014后端 当我尝试执行直通插入时,没有收到完整的SQL Server错误消息 Dim qd作为QueryDef Dim rs作为DAO.Recordset 错误时转到保存\u错误 设置qd=CurrentDb.CreateQueryDef(“”) qd.ReturnsRecords=False 如果为null(Me.txtCategoryName),则 MsgBox“输入类别名称” 其他的 qd.Connect=Con

我正在将我们从MS Access 2007后端过渡到SQL Server 2014后端

当我尝试执行直通插入时,没有收到完整的SQL Server错误消息

Dim qd作为QueryDef
Dim rs作为DAO.Recordset
错误时转到保存\u错误
设置qd=CurrentDb.CreateQueryDef(“”)
qd.ReturnsRecords=False
如果为null(Me.txtCategoryName),则
MsgBox“输入类别名称”
其他的
qd.Connect=ConStringName
qd.sql=“插入[Categories](名称)值(“&Text Field&”)”
执行
如果结束
在我的测试用例中,一个唯一约束应该会引发一个错误,即名称重复并且不能插入。相反,我只是得到一个ODBC——调用失败

如果我尝试在实际的查询窗口中创建传递查询,则会得到完整的错误

我当前的错误处理程序是一个消息框:

MsgBox“FormName | SubName:&Error$,vbCritical,“Error”
如果我将表切换到链接表并尝试插入,则不会出现错误。我想在这种情况下出错


如何在VBA中获得完整错误?

放弃DAO,改用ADODB。然后,您可以将带有Events conn的
声明为ADODB.Connection
,并处理
conn\u InfoMessage
和/或
conn\u ExecuteComplete
,这将为您提供一个
pError
参数对象,其中应包含详细的错误消息。或者,您可以迭代连接的
错误
集合。在对象浏览器(F2)中浏览DAO库成员时,我看不到任何等价物。DAO是Access使用的。对于SQL Server,您无论如何都要使用ADODB。我想DAO可能是问题所在。我已经有一段时间没有与ADODB合作了,所以我忘记了区别。DAO不是问题所在。