通过弹出子表单 (2) 添加新子表单 (1) 记录后重新查询子表单 (1) - Access 2007
Posted
技术标签:
【中文标题】通过弹出子表单 (2) 添加新子表单 (1) 记录后重新查询子表单 (1) - Access 2007【英文标题】:Requery subform (1) after adding a new subform (1) record via pop-up subform (2) - Access 2007 【发布时间】:2013-04-17 22:47:16 【问题描述】:我有一个包含两个子表单(1 和 2)的表单。子表格 1 连续存储帐户细分的数据。使用弹出子表单(子表单 2),用户输入数据以更改或更新存储在子表单 1 上的帐户明细。提交时,信息存储在链接到子表单 1 的子表中,但数据不会刷新并在子表单 1 的新记录中添加新信息,除非我手动单击主页选项卡中的全部刷新按钮。
到目前为止,我已经在子表单 2 的 form_afterupdate 上尝试了以下代码,它会自动重新查询子表单 1,但在关闭主表单时会产生运行时错误 (2450):
Private Sub Form_AfterUpdate()
On Error GoTo Err_Form_AfterUpdate
Forms!frmSpendPlan!frmSpendPlanSub.Form.Requery
Exit_Form_AfterUpdate:
Exit Sub
Err_Form_AfterUpdate:
MsgBox Err.Description
Resume Exit_Form_AfterUpdate
End Sub
如果有人有办法在提交子表单 2 后自动重新查询子表单 1 数据而不会产生错误,请告诉我,感谢您提供的任何帮助。
谢谢!
【问题讨论】:
【参考方案1】:我有时和你有同样的问题!表单没有正确刷新。
方法一
试试这行代码,而不是当前的重新查询代码。它不应该给你一个错误,但由于错误可能仍然无法工作......
Form_frmSpendPlanSub.Requery
我使用这种格式来跨表单引用,并且通常效果很好。
方法二
1) 您可以尝试在设计视图中单击正在执行“After_Update”的表单
2) 右键单击表单并单击“BUILD EVENT.”。并选择“表达式生成器”
在表达式生成器中,您可以准确地看到您在表单中的链接到您想要访问的表单以及您想要做什么......
因此,您可以通过 FORMS--> Loaded Forms--> frmSpendPlanSub 导航自己,然后从列表中翻倍点击“” 这将使您参考您想要影响的表单。 然后您所要做的就是将上面框中提供给您的代码复制到您的 VBA 代码中,然后引用您想要执行的操作...
例如
Forms![frmMainForm]![frmSecondForm].Form![frmThirdForm].Form.Requery
希望对你有帮助……
【讨论】:
谢谢!!方法1完美!我在 frmSpendPlanSub AfterUpdate 上使用了它。如果我有更多的声望点,我会给你投票。再次感谢! 没问题!很高兴它有帮助:)以上是关于通过弹出子表单 (2) 添加新子表单 (1) 记录后重新查询子表单 (1) - Access 2007的主要内容,如果未能解决你的问题,请参考以下文章