MS Access 2010:未绑定的组合框不会更新
Posted
技术标签:
【中文标题】MS Access 2010:未绑定的组合框不会更新【英文标题】:MS Access 2010: Unbound combo box won't update 【发布时间】:2014-02-20 23:24:52 【问题描述】:我在 MS Access 2010 中创建了一个表单,使用未绑定的组合框按名称选择表条目,并使用弹出表单将新条目插入数据库。由于组合框不会自行更新,因此我尝试在弹出表单“保存”按钮 OnClick 事件中使用 Forms![main_form].[unbound_cmb].Requery
和 Forms![main_form].Form.Refresh
/Requery
强制更新,但这三种方法均无效。
那么如何在添加新记录/单击“保存”按钮后更新组合框?
【问题讨论】:
不是 100% 确定这一点,但是当您打开弹出表单时,带有组合框的表单会失去焦点。您能否在请求组合框记录的主窗体上添加“Form_GotFocus”事件?或者您可以有一个计时器来检查弹出窗口是否已关闭......但您应该能够在关闭时重新查询组合框。希望有人能提供更好的解决方案... 从mod_update()
(我的VBA函数)更改宏命令的顺序并关闭弹出窗口以关闭和mod_update()
后,组合框会更新,但选择新记录不会更新选择旧条目时的表单确实
【参考方案1】:
约翰内斯,
您使用什么来填充组合框?表还是查询?
另外,我不确定您是否需要在这里重新查询。我使用 VBA Command.Requery 来更新 After Update 事件中的级联组合框。
我有一个类似的数据库,用于为考点注册人员。我有一个用于数据输入的弹出式表单,一个用于新测试站点的弹出式表单,以及一个使用两个未绑定组合来过滤报告的表单。我的两个组合都是自我更新的,我通过使用查询来完成这一点。 // 编辑您将要阅读此内容********* **** 关于 Command.Requery 的更多信息,当您需要再次运行查询时使用 Requery,通常针对查询中的不同键。虽然它有时看起来似乎在工作,但它可能只是因为 Access 会自动按计时器刷新查询,或者因为您通过关闭表单导致刷新。您遇到的问题是由于您的查询没有被刷新,而不是因为它没有正确重新查询。
有关解决此问题的简单方法,请参阅下面的评论。如果由于某种原因,您需要始终打开组合选择的表单,请尝试在保存按钮上使用刷新命令。但是,我强烈建议您按照我评论中的方法进行操作,因为它一直对我有用,没有任何问题。
【讨论】:
我正在使用查询SELECT [main_data].ID, [main_data].name FROM main_data ORDER BY [main_data].name;
来填充组合框
我刚刚使用了以下内容,它更新了组合框(当我键入此内容时,我看到了我们之间的区别——注意 ! 与 . )表单![Form1]![unbound_cmb]。重新查询 DoCmd.Close acForm, Me.Name
Forms![Form1]![unbound_cmb].Requery
没有改变任何东西,但DoCmd.Close acForm, Me.Name
抛出“无效使用 Me 关键字”错误
不喜欢“Me.Name”真的很奇怪!得问一下-您还没有发出关闭命令吗?你得到一个编译错误?您的“保存”按钮在哪里 - 在“详细信息”部分?你有子表单吗?
不,我还没有发出关闭命令。 onClick 宏只运行mod_update()
,其中仅包含 Requery 和 Close 命令。弹出表单是一个简单的表单,在详细信息部分带有按钮。以上是关于MS Access 2010:未绑定的组合框不会更新的主要内容,如果未能解决你的问题,请参考以下文章
更新取消事件之前的 MS Access 不适用于未绑定的组合框
MS ACCESS - 如何在更改事件中获取未绑定组合框的当前列值