处理表单处于活动状态时已删除的记录上的#DELETED消息

时间:2011-05-02 21:04:06

标签: vba access-vba

可能有更好的方法来执行此操作,但是目前,如果用户输入了不允许的i值(在这种情况下,已关闭的项目),则会通知他们。但是,因为它位于链接到表的子表单上,所以无论如何它都会自动创建一个记录。这是它当前处理的方式(如果输入了错误的输入):

  1. 清除该记录的字段
  2. 从表格中删除记录
  3. 重新查询/刷新
  4. 目前它工作正常,除了它在与记录关联的所有控件中留下#DELETED。但是,如果我按下F5,它就会消失。是否有一种方法可以使删除的记录以编程方式消失(就像F5被命中时一样)?

1 个答案:

答案 0 :(得分:2)

我认为你有几个选择来处理这个问题。主要的是你要避免删除记录并尝试在它成为保存记录之前处理它。您应该可以使用几种不同的表单事件(不是控件事件)之一来执行此操作:Dirty,BeforeUpdate或BeforeInsert。

如果您使用Dirty事件,请检查项目是否已关闭,并检查他们正在处理的记录是否为NewRecord。如果两者都为真,则尝试使用Cancel = True和/或Me.Undo。

如果您使用BeforeUpdate事件,它的工作方式大致相同。您可能需要取消编辑并撤消编辑,正如我在上面直接提到的那样,我不确定。

我目前没有很好的方法来测试BeforeInsert事件,但我认为你可以通过使用Cancel = True阻止新记录在此事件中出现。

如果在保存之前无法处理记录,并且您必须从表单中真正清除#DELETED,则可能需要使用Me.Requery语句。这究竟是如何工作取决于表单是否绑定以及它绑定到什么,但听起来你使用的是一个绑定到表或SQL语句的相当标准的Access表单,所以我相信Requery语句应该有效。