Forms 在ms access中使用表单编辑数据的最佳做法
因此,由于必要性,我开始学习访问,因为负责访问的人过去了,必须有人继续。 我注意到他创建的所有数据库中都有一个非常糟糕的行为(至少在IMO中是这样):每个表单都直接绑定到一个表或保存的查询。这样,如果用户打开一个表单,他必须完成他应该完成的所有步骤,因为如果他在中途关闭表单(或者计算机冻结,或者诸如此类的事情),实际数据将被破坏,因为它将完成一半。这常常会破坏流程链中的一切,导致无法执行子顺序步骤,并迫使我直接手动更正表中的数据 当我开始升级他的资料并开发我自己的资料时,我一直在努力学习只允许在表单中编辑数据的方法,这样就可以随时取消该过程或最终一次性保存所有更改 如果版本很简单,我发现我可以创建一个记录集,将相关数据复制到表单中未绑定的字段,最后,如果用户选择,将数据从表单字段复制回记录集 其他时候需要更复杂的解决方案,因为我需要以连续的形式一次编辑多个数据段,“保存”它们,运行更多代码,可能添加字段来保存来自该处理的信息,等等。然后我学习了如何使用临时表,但不喜欢它,因为它会使数据库膨胀。我甚至在代码执行期间创建了临时数据库,这些数据库将承载临时表并最终被销毁,但这增加了太多不必要的复杂性 现在我使用断开连接的ADO记录集来保存临时数据和字段。它可以工作,但也有其局限性Forms 在ms access中使用表单编辑数据的最佳做法,forms,ms-access,Forms,Ms Access,因此,由于必要性,我开始学习访问,因为负责访问的人过去了,必须有人继续。 我注意到他创建的所有数据库中都有一个非常糟糕的行为(至少在IMO中是这样):每个表单都直接绑定到一个表或保存的查询。这样,如果用户打开一个表单,他必须完成他应该完成的所有步骤,因为如果他在中途关闭表单(或者计算机冻结,或者诸如此类的事情),实际数据将被破坏,因为它将完成一半。这常常会破坏流程链中的一切,导致无法执行子顺序步骤,并迫使我直接手动更正表中的数据 当我开始升级他的资料并开发我自己的资料时,我一直在努力学习只允许在
所以我想知道,你们——比我经验丰富得多——用什么方式来处理这种情况最好?使用内存中的ADO记录集真的是最好的解决方法吗?我认为您将表单所做的两件事情混合在一起,这两件事情具有完全不同的要求。编辑现有记录(绑定表单非常适合)和创建新记录(使用直绑定表单可能会导致创建不完整的记录)。方法取决于许多因素,但主要取决于新记录需要多少数据才能被视为“完整” 我通常会做以下事情之一:
- 创建一个未绑定的弹出式模式表单,用于在只存在必要字段的情况下添加新记录。完成后,它会将新记录加载到主窗体以进行进一步编辑
- 使用上述方法,除非表单不是弹出式表单,而是主表单页脚或页眉中的一组未绑定字段
- 允许用户创建新记录,但在表单的OnClose(和/或其他适合您的情况)事件上绑定验证,如果未验证,则删除半填充记录
- 允许用户在绑定表单中创建新记录,但有一个“清理”例程,可以按计划调用,也可以根据用户操作调用
If me.Dirty = True then
me.Dirty = False ' this forces your verification code to run
End if