我想将此作为错误报告给 Microsoft,但想知道是否有其他人遇到过这个问题。
++++
这是 Access 2010 数据宏的一个非常有趣且晦涩的问题。
问题是在表上触发更新前的数据宏会导致不必要的和不必要的表单刷新。刷新正在清除表单上多个多选列表框中的所有选择。我希望选择保留。在添加数据宏之前,表单就像我想要的那样工作(不清除 mslb 选择)。
重现此问题。
这发生在拆分/前端 - 后端场景中。正面和背面都是 Access 2010 文件。
在后端 ACCDB... 创建一个表“项目”,其中包含 ID 和描述列以及一个 date_updated 列。在此表的更新前放置一个数据宏,将“date_updated”字段设置为 now()。
在前端 ACCDB... 与 Items 表链接...
现在创建一个未绑定到任何表的空白表单。在表单上创建一个未绑定的多选列表框,并通过任何其他表或使用值列表填充(不管行源是什么),它可以绑定或取消绑定 - 没关系。
- 现在请注意,如果您运行表单,在列表框中选择一些项目,然后按 F5(“刷新”),您的列表框选择将按预期清除。这只是为了证明刷新表单会清除列表框选择。*
现在在表单上创建一个按钮。在这个按钮后面,放这样的 VBA 代码。
docmd.runsql "insert into Items (Description) values ('test')" (任何将行插入到 items 表中的有效 sql 语句)
打开表格。
选择列表框中的几个项目。
按下按钮。您将看到表单已刷新,因此您会丢失列表框选择。
关闭窗体,现在从 Items 表中删除数据宏。
打开表单,选择列表框中的项目,按下按钮。
现在没有数据宏,表单不会刷新,选择会保留。
++++++++++++++++++++
底线:由于某种原因,在与表单完全无关的表上触发的数据宏(但由表单后面的代码触发)会导致表单刷新。
禁用数据宏,表单不会刷新。
为什么后端 ACCDB 文件上的数据宏...会导致前端刷新表单?请记住,表单与表格或数据宏无关。
这迫使我放弃我的数据宏。我不认为这在 Access 2010 中是有意或期望的行为。
我很想得到任何人的确认,这是一个问题!
谢谢!