【发布时间】:2017-01-07 11:00:45
【问题描述】:
因此,由于需要,我开始学习访问权限,因为负责它的人已经过去了,有人不得不继续下去。 我注意到他创建的所有数据库中的一个非常糟糕的(至少是 IMO)行为:每个表单都直接绑定到一个表或保存的查询。这样,如果用户打开一个表单,他必须完成他应该做的所有步骤,因为如果他关闭表单中间过程(或计算机冻结,或类似的),实际数据将被泄露因为它会完成一半。这通常会破坏流程链中的所有内容,导致无法执行后续步骤,并迫使我直接在表中手动更正数据。
当我开始升级他的东西并开发自己的东西时,我一直在尝试学习允许仅在表单中编辑数据的方法,从而可以随时取消该过程或将更改全部保存在最后一次。
如果版本很简单,我发现我可以创建一个记录集,将相关数据复制到表单中未绑定的字段,最后,如果用户选择,将数据从表单字段复制回记录集.
其他时候需要更复杂的解决方案,因为我需要以连续形式一次编辑多条数据,“保存”它们,运行更多代码,也许添加字段来保存源自该处理的信息等等.然后我学会了使用临时表,但不喜欢它,因为它往往会使数据库膨胀。我什至在代码执行期间继续创建临时数据库,这些临时数据库将托管临时表并最终被销毁,但这增加了太多不必要的复杂性。
现在我使用断开连接的 ADO 记录集来保存临时数据和字段。它有效,但有其局限性。
所以我想知道,你们——比我更有经验的人——处理这种情况的最佳方法是什么?在内存中使用 ADO 记录集真的是最好的方法吗?
【问题讨论】:
-
Access的强大之处在于绑定形式。要仅保存经过验证的(完整)数据,请创建一个验证函数,并在更新前,将 Cancel 设置为 True,如果验证失败。随意选择未绑定的表单,但随后使用 Access 以外的其他工具,例如 Visual Studio 和 WinForms。
-
我开发了一个数据库来管理我们的用户群以及他们对我们其他数据库的使用权限。那里有一个表格来管理所选用户的权限。在其中,所有相关权限都已加载,管理员可以根据需要删除、创建或编辑现有权限。所有这些都发生在临时表中,因此如果用户关闭表单而不保存,则不会发生任何变化。你能告诉我你会如何使用绑定到“真实”表的表单来处理这个问题?
-
您可以将更新包装在事务中。然后,如果表单在没有提交的情况下关闭,则回滚更改。
-
我会根据您的建议做一些研究,谢谢。