无法引用子窗体以重新填充记录源运行时错误 2450 无法找到主窗体
Posted
技术标签:
【中文标题】无法引用子窗体以重新填充记录源运行时错误 2450 无法找到主窗体【英文标题】:Cant reference the subform to repopulate the recordsource Runtime Error 2450 Cant find the main form 【发布时间】:2020-10-12 21:22:31 【问题描述】:我有一个主窗体 Groups_Members,其中有 2 个子窗体作为数据表 Groups 和 Members。我正在尝试根据 Groups 子表单中的选定行填充 Members 子表单。
我在子表单 Groups 中,此代码适用于根据所选行重新填充记录源的表单 Members(更准确地,通过单击 id 字段,这不是我真正想要的,但这是一个更美观的问题):
Private Sub ID_Click()
Dim SQLsource As String
SQLsource = "SELECT [tPerson].[ID], [tPerson].[Anrede], [tPerson].[TitelVorn], [tPerson].[Vorname], [tPerson].[Nachname], [tPerson_Funktion].[Funktion], [tPerson_tInstitution].[Wochenstunden], [tPerson_tInstitution].[tInstitution_ID] " & _
"FROM (tPerson INNER JOIN tPerson_tInstitution ON [tPerson].[ID] =[tPerson_tInstitution].[tPerson_ID]) INNER JOIN tPerson_Funktion ON [tPerson].[ID] =[tPerson_Funktion].[tPerson_ID] " & _
"Where [tPerson_tInstitution.tInstitution_ID] = " & CurrentRecord & " ;"
If CurrentProject.AllForms("Members").IsLoaded = True Then
Forms("Members").RecordSource = SQLsource
End If
End Sub
但是,将其调整为适用于 MainForm“Groups_Members”中的子表单“Members”并没有成功,我无法弄清楚原因。
这个
Forms!["Praxen_und_Mitarbeiter"]!["Mitarbeiter"].Form.RecordSource = SQLsource
给我一个运行时错误 2450 找不到表单 Groups_Members 尽管表单就在我面前。
还有这个
Me.Parent!("Mitarbeiter").Forms.RecordSource = SQLsource
提示类型不匹配错误
我显然遗漏了一些东西,如果有人指出我的错误,我将不胜感激。
【问题讨论】:
子表单容器是否名为 Mitarbeiter?如果代码在 Group 子表单后面:Me.Parent.Mitarbeiter.Form.RecordSource
。评论fmsinc.com/MicrosoftAccess/Forms/Synchronize/LinkedSubforms.asp
【参考方案1】:
June7 提供的链接中描述的解决方法有效:https://www.fmsinc.com/MicrosoftAccess/Forms/Synchronize/LinkedSubforms.asp
短版:在主窗体上创建一个不可见的控件元素,并将控件源属性设置为子窗体 A 中的值。然后将子窗体 B 中的值对应到此控件元素。
这提供了预期的效果。引用的奇怪问题仍未解决,但那是另一次了。
感谢所有投入时间的人,感谢 June7 提供的解决方案。
【讨论】:
以上是关于无法引用子窗体以重新填充记录源运行时错误 2450 无法找到主窗体的主要内容,如果未能解决你的问题,请参考以下文章
当引用表中没有匹配的记录时,delete语句如何与REFERENCE约束冲突?