VBA-使用ADO的SQL Server上存储过程的成功和错误处理

我在SQL Server中有一个存储过程HS.spInsertStudentNote

CREATE PROCEDURE [HS].[spInsertStudentNote]
    (@StudentID INT,@Note VARCHAR(MAX),@UserID VARCHAR(255))
AS
BEGIN
    SET NOCOUNT ON

    INSERT INTO HS.STUDENT_NOTE (STUDENT_ID,STUDENT_NOTE,CREATED_USERID,CREATED_TIMESTAMP)
    VALUES (@StudentID,@Note,@UserID,CURRENT_TIMESTAMP)
END
GO

当用户单击access表单中的按钮并将其成功存储在我的数据库中时,我正在调用此存储过程:

Dim cn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim adStatus As ADODB.EventStatusEnum
cn.Open getDBConnectionString

With cmd
    .activeConnection = cn
    .CommandType = adCmdStoredProc
    .CommandText = "HS.spInsertStudentNote"
    .Parameters.Append .CreateParameter("@StudentID",adBigInt,adParamInput,lStudentID)
    .Parameters.Append .CreateParameter("@Note",adLongVarWChar,-1,Me.inputNote.Value)
    .Parameters.Append .CreateParameter("@UserID",adVarChar,255,(Environ$("username")))
    .Execute
End With

我希望能够处理由于执行此存储过程而导致的任何潜在错误,以及所有成功(例如:如果成功,请关闭该表单,刷新另一个表单等)。

作为示例,如果我使用lStudentID = 999999并执行存储过程,则会弹出microsoft Visual Basic,并弹出运行时错误-2147217900-INSERT语句与FOREIGN KEY Constraint冲突。 。,因为数据库中不存在STUDENT_ID = 999999。

在向用户显示为microsoft Visual Basic错误弹出窗口之前,是否可以在VBA代码中捕获此错误代码?我想将结果分为“成功”和“错误”,对于“错误”,有一个Case语句,其目标是特定的返回代码。

在旁注中,我的代码实际上不允许用户存储我的数据库中不存在的STUDENT_ID的学生笔记。对于存储过程也可能返回错误的其他可能情况,我严格使用此方案作为示例。

megamanzero 回答:VBA-使用ADO的SQL Server上存储过程的成功和错误处理

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3100484.html

大家都在问