sql-server - 在Excel中的VBA中捕获来自SQL Server的错误消息

标签 sql-server vba excel

我正在做一个 Excel 宏,以便自动执行一些最终在 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)

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

非常感谢每一个帮助!

最佳答案

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

conn.Errors.Clear
Set rs = conn.Execute(Myquery) <br/>
If conn.Errors.Count > 0 Then
    For i = 0 To conn.Errors.Count
        Debug.Print conn.Error(i).Number 
        Debug.Print conn.Error(i).Source 
        Debug.Print conn.Error(i).Description
    next i
End If
这应该可以帮助你开始。您可能会发现看到“错误零”,这实际上是一条状态消息;如果是这样,您将需要编写一些额外的代码。

关于sql-server - 在Excel中的VBA中捕获来自SQL Server的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31075100/

相关文章:

sql-server - 如何运行非常大的查询(SQL Server 和 ColdFusion)

sql-server - 如何在 SQL Server 中向现有表列添加注释?

xml - 哪个是真正的 XMLSS?

string - VBA按空格分割字符串

sql-server - 为什么我的 Azure SQL 数据库表永久锁定?

sql-server - LINQpad 无法连接到 SQL 开发人员服务器

excel - ADO:Excel:是否可以在表名上打开记录集?

vb.net - 对 XlFind 的更多控制

excel - 无法使用 VBA 通过 SOAP 请求从 Web 服务获取响应

excel - 我可以将excel文件导入phpmyadmin吗?