【问题标题】:How to Catch SQL Error through Excel VBA如何通过 Excel VBA 捕获 SQL 错误
【发布时间】:2015-02-16 22:35:22
【问题描述】:

我有一个程序正在遍历文件夹的子文件夹并在每个子文件夹上运行存储的 SQL 命令。我正在编写另一个模块,该模块将在输入之前自动检查文件,但我不喜欢让我公司的测试数据在没有任何方法知道是否出现错误的情况下挂在程序上。这是我目前拥有的代码:

Sub openConnection()

Set varConnection = New ADODB.Connection
Set varCommand = New ADODB.Command

varConnection.ConnectionString = "PROVIDER=SQLOLEDB;DATA SOURCE=192.168.1.186,1433;INITIAL CATALOG=Test1; INTEGRATED SECURITY=sspi;"
varConnection.Open

varCommand.CommandText = "importFile"
varCommand.CommandType = adCmdStoredProc
varCommand.ActiveConnection = varConnection

Set varParameter = varCommand.CreateParameter("filePath", adChar, adParamInput, Len(varFolderPath), varFolderPath)
varCommand.Parameters.Append varParameter

varCommand.Execute

varConnection.Close

End Sub

有时,命令会出错,导致数据无法上传。我怎样才能通过 Excel VBA 捕获这些 SQL 错误,以便适当地处理它们,而不像对待普通文件一样处理它们?

注意:我不介意重写代码 - 这一切仍处于 alpha 阶段。

【问题讨论】:

    标签: sql vba excel


    【解决方案1】:

    我想这可能就是你要找的……

    MS Access VBA trapping SQL Server Connection Error

    Sub OpenConnection()
        On Error GoTo ErrorHandler
    
        // Do your stuff here...
    
        ErrorHandler:
        Debug.Print Err.Number & " " & Err.Description
        ' Or else you could log the error in a file, or even display a message box, whatever...'
    End Sub
    

    从fionnuala提供的答案到上面链接的问题。

    【讨论】:

    • 这不起作用。我在问如何捕获 SQL 错误,而不是 VBA 错误。我通过 SQL Server Management Studio 中的程序运行相同的文件夹,但出现错误,它给了我一个错误,而 VBA 程序没有。
    • 我读过一篇文章,其中说低于 19 号的错误不会报告给 VBA,因此可能是 VBA 无法捕获它。
    猜你喜欢
    • 2015-09-13
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    相关资源
    最近更新 更多