MS Access:从子表单中删除记录时捕获值

Posted

技术标签:

【中文标题】MS Access:从子表单中删除记录时捕获值【英文标题】:MS Access: Capture values when record is deleted from subform 【发布时间】:2014-04-16 22:58:38 【问题描述】:

当我删除表单或子表单中的数据时,我想在BeforeDelConfirm 事件中捕获已删除的记录。我知道可以将数据从“删除缓冲区”中取出来用于其他用途。

我不想使用Delete 事件。我知道可以在记录集中实际删除数据之前从那里获取数据,但我希望它在 BeforeDelConfirm 事件中从“删除”缓冲区中取出。

我知道这是可能的,因为我几年前就做了,但我没有找到正确的代码,也没有在几个 Google 会话中找到它。

【问题讨论】:

我 99% 确定您必须使用 On Delete 事件,否则将没有理由使用它,您将直接转到 BeforeDelConfirm。投票被证明是错误的:) 你的目的是什么?为什么要避开OnDelete()?您想防止删除特定情况吗? (如果是这样,说明很容易找到。) @parakmiakos 如果您无法访问已删除的数据,为什么还要有人使用 BeforeDelConfirm 事件。 @Smandoli 我不想避免它。目前我将它用于我的目的,但我知道这是可能的,并希望我记住以这种方式获取数据的工作原理。 @user3543239 我的意思是,如果可以在 BeforeDelConfirm 事件中获取已删除的数据,那么 OnDelete 事件将毫无用处。此时存在 BeforeDelConfirm 事件,以便绕过默认确认框并提供自定义确认框,或者在某些情况下强制取消删除。 【参考方案1】:

Allen Browne 指出,Delete 事件会针对每条记录触发,但BeforeDelConfirm 会触发一次——即使选择删除多条记录也是如此。所以没有机会捕捉这些价值。

删除记录的值在 BeforeDelConfirm 中不可用。采用 Delete 事件获取值。

可以一次删除多条记录,例如如果您选择 连续形式或数据表中的多条记录。删除事件 每条记录触发一次,并且每次都可以使用该值。然后 BeforeDelConfirm 和 AfterDelConfirm 事件触发一次 删除,但当时这些值不可用。你因此 需要将已删除记录的值写入数组或 删除事件中的临时表,如果你想在 BeforeDelConfirm 事件。

他举了一个例子:http://members.iinet.net.au/~allenbrowne/AppAudit.html

【讨论】:

以上是关于MS Access:从子表单中删除记录时捕获值的主要内容,如果未能解决你的问题,请参考以下文章

从子表单中删除多个记录

MS Access 2016:设置报表的 RecordSource 以从子窗体中获取数据

从子表单的组合框中选择下拉菜单后,MS Access 在主表单中填写 ID

MS Access 以编程方式引发表单事件

使用 VBA 从 MS Access 发送电子邮件

在表单加载之前捕获记录源错误 - 访问