Access 2010 数据宏导致表单无缘无故刷新
Posted
技术标签:
【中文标题】Access 2010 数据宏导致表单无缘无故刷新【英文标题】:Access 2010 Data Macros Causing Form Refresh For No Reason 【发布时间】:2013-04-19 20:21:31 【问题描述】:我想将此作为错误报告给 Microsoft,但想知道是否有其他人遇到过此问题。
++++
这是 Access 2010 数据宏的一个非常有趣且晦涩的问题。
问题是在表上触发更新前数据宏会导致不必要的和不必要的表单刷新。刷新正在清除表单上多个多选列表框中的所有选择。我希望选择保留。在添加数据宏之前,表单就像我想要的一样工作(不清除 mslb 选择)。
重现此问题。
这发生在拆分/前端 - 后端场景中。正面和背面都是 Access 2010 文件。
在后端 ACCDB... 创建一个包含 ID 和 Description 列以及 date_updated 列的“Items”表。 在此表的更新前放置一个数据宏,将“date_updated”字段设置为 now()。
在前端 ACCDB...与 Items 表链接...
现在创建一个未绑定到任何表格的空白表单。 在表单上创建一个未绑定的多选列表框,并通过任何其他表或值列表填充(不管行源是什么),它可以绑定或取消绑定 - 没关系。
现在请注意,如果您运行表单,选择列表框中的一些项目,然后按 F5(“刷新”),您的列表框选择将按预期清除。这只是为了证明刷新表单会清除列表框选择。 *现在在表单上创建一个按钮。在这个按钮后面,放这样的VBA代码。
docmd.runsql "insert into Items (Description) values ('test')" (任何将行插入到 items 表中的有效 sql 语句)
打开表格。
在列表框中选择几个项目。
按下按钮。您将看到表单已刷新,因此您会丢失列表框选择。
关闭表单,现在从 Items 表中删除数据宏。
打开表单,选择列表框中的项目,按下按钮。
现在没有数据宏,表单没有刷新,选择保持不变。
++++++++++++++++++++
底线:由于某种原因,在与表单完全无关的表上触发的数据宏(但由表单后面的代码触发)会导致表单刷新。
禁用数据宏,表单不刷新。
为什么后端 ACCDB 文件中的数据宏...会导致前端刷新表单?请记住,表单与表格或数据宏无关。
这迫使我放弃我的数据宏。我认为这不是 Access 2010 中的预期或期望行为。
我很想得到任何人的确认,这是一个问题!
谢谢!
【问题讨论】:
【参考方案1】:当Before Change
数据宏就位并且列表框Multi Select
设置为Extended
时,我能够确认您的问题。在相同条件下,如果列表框的Multi Select
设置为Simple
,则列表框选择不会被破坏。 (我注意到当 Multi Select
设置为 Simple
时 [F5] 也不会清除选择。)
【讨论】:
感谢上帝!我将尝试将此报告给 Microsoft。这是我设计的问题!再次感谢。以上是关于Access 2010 数据宏导致表单无缘无故刷新的主要内容,如果未能解决你的问题,请参考以下文章
MS Access 2010 宏生成器:父窗体上控件的 SetProperty