读取删除的记录缓冲区

时间:2010-03-26 19:43:58

标签: ms-access recordset

根据Access(2003)文档,当您删除记录时,它被放置在缓冲区中,然后引发BeforeDeleteConfirm事件,然后是AfterConfirmDelete广告删除事件。在我的表中,如果删除了一条记录,我需要将其中一个字段值(数量值)添加到另一个表中的字段中。

我尝试在Current事件中将数量设置为私有变量,但是一旦我删除了click delete,它就会再次触发Current事件并重置我的变量。

如何访问已删除记录中字段的值?

3 个答案:

答案 0 :(得分:0)

此解决方案可能需要重新设计,但这是我用于自己的形式:

  1. 在记录表中添加一个名为“可见”的布尔字段。
  2. 在您的主表单上,设置 form.filter =“[Visible] = True
  3. 在主表单上,设置 AllowFilters =是
  4. 在您的主表单上,设置 Form.Allow Deletions = False (我们不希望他们实际上删除记录)
  5. 设置自定义删除命令按钮,设置可见=错误
  6. 如果您以后有需要,可以添加一些可填写的查询并删除查询以清理主表并将删除的值移到另一个表中。
  7. 这样,用户实际上并没有“删除”记录。相反,他们只是使该记录不可见。稍后,当表单被卸载时,您可以添加一些清理查询。

答案 1 :(得分:0)

绑定控件中的值仍可在表单delete事件中使用。在此示例中, txtid 是一个绑定文本框。

Private Sub Form_Delete(Cancel As Integer)
    Dim strActivity As String
    Dim strSql As String

    strActivity = Me.txtid & " deleted."
    strSql = "INSERT INTO tblAudit (activity) " & _
        "VALUES (""" & strActivity & """);"
    CurrentDb.Execute strSql, dbFailOnError
End Sub

答案 2 :(得分:0)

通常,如果我想在除默认操作之外的OnDelete事件中执行某些操作,我将倾向于关闭AllowDeletes并创建一个执行我想要的DELETE RECORD命令按钮。

因此,我不依赖于内置事件。如果我需要存储一个值,我会这样做,弹出确认消息,然后根据我认为最简单的方法做所需的事情。

我发现这更容易,特别是因为用户设置会导致事情表现不同。例如,当用户具有这些设置时,不会发生两个Confirm事件(来自A2003帮助文件,但总是这样):

  

注意AfterDelConfirm事件确实如此   没有发生和删除确认   如果你没有显示对话框   清除“记录更改”复选框   在“编辑/查找”选项卡上的“确认”下   选项对话框,可用   单击“工具”菜单上的“选项”。

所以我只是通过滚动自己的删除代码并避免默认行为来避免整个事情。

(是的,如果你多年来一直关注我的帖子,你知道我建议不要简单地使用默认的访问行为,这是一个非常不寻常的事情,但这是一个我认为更多控制权适用于几乎所有情况的情况例)