如何强制刷新导航控件?



在我的客户端表单我有2个文本框(tbhname,和tbHHID)和一个导航控件(nav)显示子表单/子报表。当用户单击tbhname时,将打开一个模态表单,以选择要查看的客户机。在切换客户端之前,表单显示:

tbhname: Client123
nav: Account1, Account2, Account3

切换到Client456后,显示如下:

tbhname: Client456
nav: Account1, Account2, Account3

以下是应该显示的内容:

tbhname: Client456
nav: Account4, Account5, Account6

用户点击其中一个导航选项卡后,它显示正确,但我不知道如何强制刷新导航控件没有点击。如有任何建议,我将不胜感激。

所有导航的子表单/子报表都有navigationwherecclause子句设置为:"[HH_ID] = tbHHID">

下面是Form_Load和tbHHName_Click子程序

Private Sub Form_Load()
On Error Resume Next

'Set form recordsource
Me.RecordSource = "SELECT * FROM _HOUSEHOLDS WHERE HH_ID = " & GetSetting(AppName, Reg_JBGeneral, Reg_HH_ID, 0)

'Apologize to users
MsgBox "Please click on the Holdings tab again to refresh the data." & vbNewLine & _
"      Sorry for the extra click," & vbNewLine & _
"                            -MaybeOn8", , AppName

End Sub
Private Sub tbHHName_Click()
On Error Resume Next
'open the form that sets new HH_ID value using the SaveSetting method
DoCmd.OpenForm "Households_Select", WindowMode:=acDialog
Form_Load
End Sub

Thanks in advance, SO

我在主表单上测试了UNBOUND组合框以选择过滤器参数,并且NavigationWhereClause具有标准表达式HH_ID=Forms![NavForm]!Combo9。组合框AfterUpdate事件中的代码:

Forms![NavForm]!NavigationSubform.Requery

然后我用代码测试改变组合框和查询的值。

Forms!NavForm.Combo9 = 17
Forms!NavForm.NavigationSubform.Requery

这些都可以工作,并且不涉及更改RecordSource。现在只需决定在何处放置更改控件值和查询子表单的代码。

也可以使用DoCmd。BrowseTo方法将焦点设置在特定的Navigation选项卡上。

找到修复。我把它加到Form_Load子元素的末尾:

Forms("Households").NavigationSubform.Report.FilterOn = False
Forms("Households").NavigationSubform.Report.FilterOn = True

尽管在导航控件中有混合的子表单和子报表,但一切似乎都加载得很好。