设置me.AllowDeletions为false后记录删除

时间:2013-12-31 18:43:28

标签: sql-server-2008 access-vba

将Access 2007前端与SQL Server 2008 r2后端一起使用。我有记录可以勾选为“患者看见”。如果患者看到'是真的然后删除不应该发生。相反,如果患者看到'是错误的删除记录是允许的。到目前为止我所拥有的是:

    Set db = CurrentDb
    Set rs = db.OpenRecordset("select PatientSeen,PatientLogID from PatientLog where           PatientLogID = " & Me.PatientLogID, dbOpenDynaset, dbSeeChanges)
    test = rs!PatientLogID
    If MsgBox("Are you sure you want to delete record?", vbYesNo, "Delete Record") =   vbYes Then
    If rs!PatientSeen = False Then

    strSQL = "UPDATE [PatientLog] " _
       & "Set IsDeleted = 1 " _
       & "Where PatientLogID = " & Me.PatientLogID
    'View evaluated statement in Immediate window.
    Debug.Print strSQL
    DoCmd.SetWarnings False
    DoCmd.RunSQL strSQL

    ElseIf rs!PatientSeen = True Then
    MsgBox ("Patient already seen, cannot delete")
    Me.AllowDeletions = False
    'Me.Undo
    End If
    Else
    Me.Undo
    Exit Sub
    End If      

患者看到假的工作正常。它将IsDeleted更新为1以获得正确的记录。但是,如果患者看到的是True,则会弹出msgbox(患者已经看过......),但记录仍然会从表中完全删除而不是。如果我在最初的问题上点击否,确实要删除'。它不是只退出sub而是删除记录。

我仍然是相对较新的Access和构建后端SQL,但在多年的Excel报告中非常熟悉VBA。任何建议都非常赞赏。

1 个答案:

答案 0 :(得分:1)

Me.AllowDeletions = False不会阻止OnDelete事件中正在进行的删除,它只是将表单属性AllowDeletions更改为No(这将阻止在完成此记录后删除其他记录)。

要停止在OnDelete事件中删除当前记录,只需添加行Cancel = True即可。退出OnDelete时Cancel参数的状态(False进入)确定是否提交了删除。