我可以'我找不到引用";家长"



在我的Access主窗体上,我有一个列表框控件(名为"ActionsTaken"(,它显示了与主窗体记录相关联的操作列表。这些保存在一个单独的表中,该表链接到主表。通过一个按钮,我打开一个子窗体,将项目添加到列表中。输入文本后,我按下"完成"按钮,该按钮将用宏关闭子窗体。当子窗体关闭时,deactivate事件会触发一个事件过程,该过程验证数据,将数据写入Actions表,并(希望(重新查询主窗体上的列表控件。如果我使用对主窗体上控件的显式引用进行重新查询,则一切都会正常。但此子窗体是从几个不同的主窗体调用的,所以我想用"Parent"引用主窗体上的控件。我认为应该使用的语法是:

Me.Parent!ActionsTaken.Requery

当代码执行时,我会在上面的行上得到一个调试中断,当我重置代码执行时我会得到一个弹出框,上面写着"当前记录中没有名为‘Me.PParent!ActionsTaken’的字段。"控件肯定在那里(记住,对它的显式引用有效(。

我怀疑我不明白"家长"应该如何被提及。我发现了许多其他语法,它们有点和bang的各种组合,并且去掉了"Me"。有些语法会给我不同的错误信息,但都不起作用。

我发现了一些棘手的解决办法,但我真的很好奇到底出了什么问题。

子窗体是位于另一个窗体(这是"父窗体"(上的窗体,当打开另一个表单("父窗体(时打开,因此它不是子窗体,也没有父窗体。

通过OpenArgs将表单名称传递给第二个打开的表单:
DoCmd.OpenArgs "secondformname", , , , , , Me.Name

然后第二个表单可以引用第一个:
Forms(Me.OpenArgs).ActionsTaken.Requery

另一种方法是使用acDialog打开第二个表单,它将暂停第一个表单代码的执行,直到第二个窗体关闭。

DoCmd.OpenArgs "secondformname", , , , , acDialog
Me.ActionsTaken.Requery

多亏了June和其他人,我终于成功了。我将"Child"表单绑定到一个表,即使不需要它,因为这可以通过OpenForm命令间接传递记录号(ID(。我用OpenForm命令的OpenArgs参数将"Parent"表单名称传递给"Child"(添加新操作子表单(:

strFormName = Me.Name
DoCmd.OpenForm "Add New Action subform", , _
"Comment Card ID Query", "[Comment Card].ID=[ID]" _
, , , Me.Name

当我完成"孩子"时,我执行以下代码:

Dim strParentName As String
strParentName = Me.OpenArgs
' Requery the Actions List Box on the Parent
[Forms](strParentName)!ActionsTaken.Requery
' Close the form
DoCmd.Close

我尝试了June建议的语法:Forms(Me.OpenArgs….(,但我在Office 365中的Access中出现了错误。使用字符串变量有效。

谢谢你的帮助!

最新更新