我在网上做了很多搜索,但似乎无法解决这个问题,所以我想我会问这里。我在SO上找到的最接近的问题是How to requery a subform from another form?,但使用该答案并没有帮助(也许提问者的子表单不是基于另一种形式)。
在一行中,我的问题最好描述为:子表单A不能成功重新查询,除非表单A(它是源对象)是手动打开并首先被重新获取
所以这是相关对象的结构:
子表单A将表单A作为其“源对象”(在将其作为子表单与其他表单一起放入此选项卡式控件之前,它曾经是一个独立的表单)。表格A依次将表A作为其“记录来源”。
子窗体B上有一个按钮,用于执行以下的VBA代码:
但是,这本身并不会产生所需的行为:当我按下按钮时子窗体A没有成功重新查询,因此它不会带我到新添加的记录来编辑它。在我关闭并重新打开Comboform之前,新添加的记录不会显示在子表单A中。
我最初认为问题是我需要在重新查询子表单A之前重新查询表单A,因为子表单A将表单A作为其源对象。这有效 - 但只有在首先打开Comboform之前手动打开表格A 。所以这是有效的(其中'F'是子表单B):
Forms![FormA].Requery
F.Parent![SubformA].Requery
F.Parent.Requery
F.Parent.SetFocus
F.Parent![SubformA].SetFocus
DoCmd.GoToRecord , Record:=acLast
但是如果表单A尚未打开则会抛出错误。这不起作用:
DoCmd.OpenForm "TransFormTest"
Forms![TransFormTest].Requery
F.Parent![Trans].Requery
F.Parent.Requery
F.Parent.SetFocus
F.Parent![Trans].SetFocus
DoCmd.GoToRecord , Record:=acLast
以上执行时没有错误,但子表单A无法成功重新查询,除非首先手动打开表单A 。
任何帮助都会非常感激 - 我最好不要记得每次都打开表格。