VBA EGe错误消息rom Execute SP

VBA EGe错误消息rom Execute SP,vba,stored-procedures,Vba,Stored Procedures,我有一个执行存储过程的Excel宏(SQL2008 R2)。SP有很多错误处理,并且会产生很多自定义错误。有没有一种方法可以在不使用输出参数的情况下将这些参数返回到VBA(假设这样做可行)。我所得到的只是错误6 这是我的代码片段 ' Call the SP Dim iReturn As Integer iReturn = 0 cmd.CommandType = adCmdStoredProc cmd.ActiveCon

我有一个执行存储过程的Excel宏(SQL2008 R2)。SP有很多错误处理,并且会产生很多自定义错误。有没有一种方法可以在不使用输出参数的情况下将这些参数返回到VBA(假设这样做可行)。我所得到的只是错误6

这是我的代码片段

       ' Call the SP
        Dim iReturn As Integer
        iReturn = 0
        cmd.CommandType = adCmdStoredProc
        cmd.ActiveConnection = conn
        cmd.CommandText = "EPMS_CreateInvoice"
        cmd.Parameters.Append cmd.CreateParameter("iReturn", adInteger, adParamReturnValue)
        cmd.Parameters.Append cmd.CreateParameter("@SGInvID", adInteger, adParamInput)
        cmd.Parameters.Append cmd.CreateParameter("@InvDate", adVarChar, adParamInput, 10)
        cmd.Parameters.Append cmd.CreateParameter("@PostDate", adVarChar, adParamInput, 10)
        cmd.Parameters.Append cmd.CreateParameter("@CSR", adVarChar, adParamInput, 50)
        cmd.Parameters.Append cmd.CreateParameter("@SalesRep", adVarChar, adParamInput, 20)
        cmd.Parameters.Append cmd.CreateParameter("@BillerInitials", adVarChar, adParamInput, 4)
        cmd.Parameters.Append cmd.CreateParameter("@Terms", adVarChar, adParamInput, 5)
        cmd.Parameters.Append cmd.CreateParameter("@InvNo", adVarChar, adParamInput, 20)
        cmd.Parameters.Append cmd.CreateParameter("@CustomerID", adVarChar, adParamInput, 20)
        cmd.Parameters.Append cmd.CreateParameter("@Draft", adBoolean, adParamInput)



        iReturn = cmd.Parameters(iReturn)
        cmd.Parameters("@SGInvID") = SGInvID
        cmd.Parameters("@InvDate") = InvoiceDate
        cmd.Parameters("@PostDate") = PostingDate
        cmd.Parameters("@CSR") = CSR
        cmd.Parameters("@SalesRep") = SalesRep
        cmd.Parameters("@BillerInitials") = BillerInitials
        cmd.Parameters("@Terms") = TermsCode
        cmd.Parameters("@InvNo") = InvoiceNo
        cmd.Parameters("@CustomerID") = CustomerID
        cmd.Parameters("@Draft") = Draft
谢谢


马克

蒂姆·威廉姆斯的回答正是我想要的:


如果您使用的是ADO,您是否尝试过检查连接的错误集合:w3schools.com/ADO/ADO_ref_error.asp?

我显然不知道您的SP会做什么,但是,不可能将大部分错误处理从存储过程中去掉吗?如果您使用ADO,您是否尝试过检查连接的
错误
集合:?Andy,谢谢您的回复,但是SP实现了很多业务逻辑,所以转到VBA是不实际的Tim,谢谢,这正是我所需要的!