2010-03-26 144 views
0

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

我尝试在当前事件中将数量设置为私有变量,但只要删除点击删除,它看起来像Current事件再次触发并重置我的变量。

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

回答

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 
0

这种解决方案可能需要进行一些重新设计,但它是我用我自己的一种形式:

  1. 一个布尔字段添加到您的名为“可见”记录表。
  2. 在您的主要形式,将您form.filter = “[可见] = TRUE
  3. 在您的主要形式,设置AllowFilters =是
  4. 在您的主要形式,将您Form.Allow缺失=假(我们不希望他们实际上删除记录)
  5. 创建自定义删除命令按钮,设置可见=假
  6. 如果您稍后感觉到需要,可以添加一些可执行的查询并删除查询来清理主表并将删除的值移到另一个表中。

这样,用户实际上并没有'删除'记录。相反,他们只是让这个记录看不见。之后,当表单被卸载时,您可以添加一些清理查询。

0

一般来说,如果我想要做的不是默认的动作以外的OnDelete事件的东西,我会倾向于把AllowDeletes关闭并创建一个删除记录的命令按钮我想要做什么。

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

我只是觉得这很容易,特别是因为用户设置可能会导致事情行为有所不同。例如,当用户拥有这些设置两个确认事件不发生(从A2003的帮助文件,但它一直都是这样):

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

所以我只是通过滚动我自己的删除代码并避免默认行为来避免整个事情。 (是的,如果你多年来一直关注我的帖子,你知道我仅仅使用默认的Access行为建议是非常不寻常的,但是这是一种情况,我觉得更多的控制几乎适用于几乎所有的行为所有情况下)