2014-07-11 91 views
0

所以我有一个表格(A),表格(B)和表格(X)。这两种表格均基于表格(X)的查询。用户可以点击表单A,并打开表单B,筛选出用户点击的内容。造成这种情况的VBA的作品,并且是:微软访问请求更新表格后2个请求

docmd.openform "formB" , , , "mykey = " & me.mykey 

一旦用户是B型,他们有使用组合框下拉更新表(X)的能力。表单B上的用户可以在记录旁边选择一条记录和一个下拉列表,用于更改表X上的信息。一旦信息发生变化,它就会相应地在后端表中更新。

我的问题是这些更改不反映在任何一种形式。 VBA的我试图用更新的形式是
形式!formB.requery
形式!formA.requery

奇怪的是,如果我点击形式的并重新打开B型更改第二记录,我现在可以看到以前的更新。所以第二次查询更新正确的第一次更改。有任何想法吗?

+0

我的猜测是你的'forms!formB.requery'不正确。试试简单的'Me.Requery',看看会发生什么(如果它做了什么)。或'Me.formB.Requery' –

+0

尝试过这两种,没有做任何事情。当我运行[forms!formB.requery]时,我可以看到发生在访问权底部的查询。所以我相信VBA是正确的,只是与我如何设置表格或表格或错误的东西有关。 – barker

+0

试试这个,再次作为一个简单的测试:'Me.Refresh' ..你用什么处理程序来触发'Requery'? –

回答

0

这是一个访问中的错误,而不是我的代码。如果组合框在重新运行时有焦点,它将不会正确更新表单,尽管后端表仍然会更新。我通过将代码添加到更新后更改焦点的组合框中来修复它,现在它可以工作。

+0

很高兴你有这个工作。你有没有发现任何关于行为的文件?希望对此做一些研究。谢谢。 – VBlades

+0

这是正确的MS文档http://msdn.microsoft.com/en-us/library/office/ff191903%28v=office.15%29.aspx如果您省略表达式指定的对象,Requery方法重新查询基础数据源的形式或控件的重点。如果具有焦点的控件具有记录源或行源,则会重新进行查询;否则,只会刷新控件的数据。 –