Error handling MS Access回滚错误处理回滚

Error handling MS Access回滚错误处理回滚,error-handling,ms-access-2013,rollback,Error Handling,Ms Access 2013,Rollback,在我的程序中,我有一个功能,它可以做三件事:在一些表中插入一些内容,创建一个pdf文档,并发送一封电子邮件,其中包含在附件中创建的文档。我在解决错误处理时遇到问题 DAO.DBEngine.BeginTrans On Error GoTo failed CurrentDb.Execute "INSERT INTO tblClaimStatus ( ClaimID, ClaimStatusTypeID, UserID) " & _

在我的程序中,我有一个功能,它可以做三件事:在一些表中插入一些内容,创建一个pdf文档,并发送一封电子邮件,其中包含在附件中创建的文档。我在解决错误处理时遇到问题

    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事务。但我还需要Subs WriteGraceDocument和SendEmail中尚未提交的数据

我应该如何解决这个问题?

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

DAO.DBEngine.beginters
'在尝试插入这些值之前验证这些值。
Success=ValidateInserts(claimId,2,CurrentUserId,Me!OriginalDeadlineTextbox.Value,Me!NewDeadlineTextbox.Value)
如果成功的话
CurrentDb.Execute“INSERT INTO tblClaimStatus(ClaimID,claimstatuid,UserID)”&_
“值(“&claimId&”,2,“&CurrentUserId&”,dbFailOneError”
CurrentDb.Execute“Insert INTO tblClaimPartner(ClaimId、OriginalDeadline、NachfristDeadline)”&_
“值(“&claimId&“,”&Me.OriginalDeadlineTextbox&“,”&Me.NewDeadlineTextbox&“);”,dbFailOnError
如果结束
如果成功的话
Success=WriteGraceDocument(claimId)
如果结束
如果成功的话
成功=发送电子邮件(claimId)
如果结束
如果成功的话
DAO.DBEngine.CommitTrans
其他的
DAO.DBEngine.RollBack
如果结束