可能有更好的方法来执行此操作,但是目前,如果用户输入了不允许的i值(在这种情况下,已关闭的项目),则会通知他们。但是,因为它位于链接到表的子表单上,所以无论如何它都会自动创建一个记录。这是它当前处理的方式(如果输入了错误的输入):
目前它工作正常,除了它在与记录关联的所有控件中留下#DELETED。但是,如果我按下F5,它就会消失。是否有一种方法可以使删除的记录以编程方式消失(就像F5被命中时一样)?
答案 0 :(得分:2)
我认为你有几个选择来处理这个问题。主要的是你要避免删除记录并尝试在它成为保存记录之前处理它。您应该可以使用几种不同的表单事件(不是控件事件)之一来执行此操作:Dirty,BeforeUpdate或BeforeInsert。
如果您使用Dirty事件,请检查项目是否已关闭,并检查他们正在处理的记录是否为NewRecord。如果两者都为真,则尝试使用Cancel = True和/或Me.Undo。
如果您使用BeforeUpdate事件,它的工作方式大致相同。您可能需要取消编辑并撤消编辑,正如我在上面直接提到的那样,我不确定。
我目前没有很好的方法来测试BeforeInsert事件,但我认为你可以通过使用Cancel = True阻止新记录在此事件中出现。
如果在保存之前无法处理记录,并且您必须从表单中真正清除#DELETED,则可能需要使用Me.Requery语句。这究竟是如何工作取决于表单是否绑定以及它绑定到什么,但听起来你使用的是一个绑定到表或SQL语句的相当标准的Access表单,所以我相信Requery语句应该有效。