我有两种主要形式。一个是信息中心,另一个是编辑。 从仪表板,我可以去编辑。
编辑完成后,我按下一个按钮重新打开仪表板。 可以打开仪表板,我想在仪表板中刷新子表单。
答案 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