【问题标题】:Record deleting after setting me.AllowDeletions to false将 me.AllowDeletions 设置为 false 后记录删除
【发布时间】:2013-12-31 18:43:27
【问题描述】:

将 Access 2007 前端与 SQL Server 2008 r2 后端结合使用。我有可以勾选为“已看到患者”的记录。如果“Patient Seen”为真,则不应发生删除。相反,如果“Patient Seen”是错误的,则允许删除记录。我到目前为止是这样的:

    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      

The Patient Seen false 工作正常。它将 IsDeleted 更新为 1 以获得正确的记录。但是,如果 Patient Seen 为 True,则会弹出 msgbox(Patient already seen...),但记录仍会从表中完全删除,而不是。如果我在“确定要删除”的初始问题上单击“否”也是如此。它不只是退出 sub 它会删除记录。

我对 Access 和构建后端 SQL 仍然相当陌生,但从多年的 Excel 报告中非常熟悉 VBA。任何建议都非常感谢。

【问题讨论】:

  • 这段代码在哪里?显然,它是在一个表单中,但它是在单击按钮上吗?表单事件?实际删除发生在哪里?您的代码中没有任何内容实际上会删除记录。
  • 这存在于表单的 On Delete 事件中。

标签: sql-server-2008 ms-access vba


【解决方案1】:

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

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

【讨论】:

  • 这与其他一些调整一起完成了。非常感谢。这里的第一个问题是积极的体验。
猜你喜欢
  • 1970-01-01
  • 2020-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 2018-10-03
  • 1970-01-01
相关资源
最近更新 更多