从Excel中的VBA中的SQL Server捕获错误消息

我正在做一个macros的macros,为了自动化一些查询最终我在SQL Server中运行。 我的问题是,我不知道如果一个查询没有成功,服务器可以提示excel。

例如,我正在导入文件,并且没有语法错误,但是如果批量插入语句设置不正确,可能会导致错误。 对于SQL连接我使用以下内容:

Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Dim sConnString As String ' Create the connection string. sConnString = "Provider=SQLOLEDB;Data Source=localhost;" & _ "Initial Catalog=" & MyDatabase & ";" & _ "Integrated Security=SSPI;" ' Create the Connection and Recordset objects. Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.Open sConnString Set rs = conn.Execute(Myquery) 

如果我在编译代码的时候遇到了语法错误,那么停下来就好了。 但是,如果我有另一个问题,例如数据库名称不好,表已经存在,然后程序运行没有错误,我只能检测到,当我在SQL Server中检查它。 我真的很想知道查询运行是否导致错误,然后编写一些警报消息,然后到我的macros。 我怎样才能做到这一点?

每一个帮助非常感谢!

ADO连接对象有一个Errors集合,您可以在运行SQL之后检查它们:

 conn.Errors.Clear
设置rs = conn.Execute(Myquery) 
如果conn.Errors.Count> 0那么 对于我= 0到conn.Errors.Count Debug.Print conn.Error(i).Number Debug.Print conn.Error(i).Source Debug.Print conn.Error(i).Description 接下来我 万一

这应该让你开始。 你可能会发现你看到一个“错误零”,实际上是一个状态信息; 如果是的话,你会有一些额外的编码要做。

我发现这有帮助,但需要使用:

 Debug.Print conn.Errors.Item(i).Description Debug.Print conn.Errors.Item(i).Source Debug.Print conn.Errors.Item(i).NativeError 

我可能会使用不同的连接types