首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MS访问回滚错误处理回滚

MS访问回滚错误处理回滚
EN

Stack Overflow用户
提问于 2020-10-27 14:53:59
回答 1查看 28关注 0票数 0

在我的程序中,我有一个函数,它做三件事:它在一些表中做几次插入,它创建一个pdf文档,它发送一封电子邮件,在附件中包含创建的文档。我在解决错误处理时遇到了问题。

代码语言:javascript
复制
    DAO.DBEngine.BeginTrans
    On Error GoTo failed
    
    CurrentDb.Execute "INSERT INTO tblClaimStatus ( ClaimID, ClaimStatusTypeID, UserID) " & _
        "VALUES (" & claimId & ", 2," & CurrentUserId & ");", dbFailOnError
    CurrentDb.Execute "Insert INTO tblClaimPartner (ClaimId, OriginalDeadline, NachfristDeadline) " & _
        "VALUES (" & claimId & ", '" & Me.OriginalDeadlineTextbox & "', '" & Me.NewDeadlineTextbox & "');", dbFailOnError
    
    WriteGraceDocument (claimId)
    SendEmail (claimId)
    DAO.DBEngine.CommitTrans

问题是,如果有任何事情失败,我希望能够回滚SQL-transaction。但我还需要在Subs和SendEmail中尚未提交的数据。

我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2020-10-29 15:19:01

让您的函数返回成功或不成功

代码语言:javascript
复制
DAO.DBEngine.BeginTrans

' Validate the values before attempting to insert these.
Success = ValidateInserts(claimId, 2, CurrentUserId, Me!OriginalDeadlineTextbox.Value, Me!NewDeadlineTextbox.Value)

If Success Then    
    CurrentDb.Execute "INSERT INTO tblClaimStatus ( ClaimID, ClaimStatusTypeID, UserID) " & _
        "VALUES (" & claimId & ", 2," & CurrentUserId & ");", dbFailOnError
    CurrentDb.Execute "Insert INTO tblClaimPartner (ClaimId, OriginalDeadline, NachfristDeadline) " & _
        "VALUES (" & claimId & ", '" & Me.OriginalDeadlineTextbox & "', '" & Me.NewDeadlineTextbox & "');", dbFailOnError
End If
    
If Success Then
    Success = WriteGraceDocument(claimId)
End If
If Success Then
    Success = SendEmail (claimId)
End If

If Success Then
    DAO.DBEngine.CommitTrans
Else
    DAO.DBEngine.RollBack
End If
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64549486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档