刷新另一个表单中的所有子表单

时间:2017-11-16 04:14:34

标签: ms-access subform

我有两种主要形式。一个是信息中心,另一个是编辑。 从仪表板,我可以去编辑。

编辑完成后,我按下一个按钮重新打开仪表板。 可以打开仪表板,我想在仪表板中刷新子表单。

2 个答案:

答案 0 :(得分:1)

此模块将刷新您传递的表单以及所有子表单。重新查询通常会重置所选项目,因此在重新查询之前,我们将保存当前记录。如果重新查询后该记录不存在,它将正常返回到顶部,而不会出现错误。

Public Sub RefreshForm(ByRef theForm As Form)
    On Error GoTo ErrorHandling

    Dim thisRecord As Long
    thisRecord = theForm.CurrentRecord
    Echo False

    Dim childForm As Control
    For Each childForm In theForm.Controls
        If TypeOf childForm Is SubForm Then
            childForm.Requery
        End If
    Next

    With theForm
        .Requery
        .Recordset.Move thisRecord
    End With

ErrorHandling:
    Echo True
End Sub

要使用它,只需将其放在需要刷新的位置即可

RefreshForm Me

答案 1 :(得分:0)

你不应该关闭并重新打开任何东西。任何打开的表单及其上的控件都可以从任何地方运行的VBA代码中获取。对于子表单,它有点复杂。

要在当前表单上重新查询子表单控件:[SubformControlName].Requery

要在当前表单的子窗体控件中重新查询表单:[SubformControlName].Form.Requery

要在当前表单上的子表单中重新查询控件:[SubformControlName].Form.Controls("ControlName").Requery

要在应用程序中的其他表单上执行上述任何操作,请使用Forms![FormName].

作为前缀

示例:Forms![FormName].[SubformControlName].Form.Controls("ControlName").Requery