MS Access 2016:当TabControl选项卡重新获得焦点时,请重新查询列表框

时间:2018-06-15 17:39:44

标签: ms-access tabcontrol

我有一个包含2个标签的Tab Control元素:Tab1和Tab2。 Tab2包含ListBox元素,其RowSource查询在Tab1中提交的数据。

假设用户打开包含这两个标签的此表单。它们最初位于Tab1上。在Tab2的Form_Load事件中,它查询填充其ListBox所需的数据。现在他们将标签切换到Tab1。他们输入一些数据并将新记录提交到相应的表(Tab2 ListBox用作RowSource的表)。当用户切换回Tab2时,他们看不到这个新添加的记录。

到目前为止,我所做的是当用户点击ListBox中的任意位置时,它会调用Requery,然后会显示该记录。这还不够,因为用户不必直接点击列表框来更新其内容。

我尝试将此Requery代码放在Form_Load,Form_Activate,GotFocus中,但没有任何效果。我知道您可以检测TabControl点击,但是如何访问表单及其包含的元素?

关于如何在标签获得控制权时重新查询此列表框的任何想法?

2 个答案:

答案 0 :(得分:0)

您最有可能寻找On Activate触发器。

然后,在代码中使用Form.RequeryForm.Recalc,具体取决于您实际想要做的事情。

或者,您可以使用用户用来提交记录的相同控件来触发重新查询。虽然,这需要特定的Form成为焦点。

答案 1 :(得分:0)

如果要在tabcontrol上为特定选项卡添加代码,最方便的方法是在TabCtl_Change事件中编写代码。更改选项卡控件时会发生这种情况。 E.g:

Private Sub MyTabCtl_Change()
    If MyTabCtl.Pages(MyTabCtl.Value).Name = "Tab2" Then 'The tab control just changed to your page
        'Requery that list box
    End If
End Sub

请注意,如果您根本不使用制表符控件,但导航控件(听起来很像,制表符控件不一定要有子表单,并且不要使用有Form_Load个事件,表格有)