问题描述
我有一个MainForm Groups_Members ,其中有2个子表单作为DataSheets 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”中的Subform“ Members”仍然没有成功,我也无法弄清楚为什么。
此
Forms!["Praxen_und_Mitarbeiter"]!["Mitarbeiter"].Form.RecordSource = sqlsource
给我一个运行时错误2450,尽管该表单就在我面前,但找不到表单 Groups_Members 。
还有这个
Me.Parent!("Mitarbeiter").Forms.RecordSource = sqlsource
我显然缺少了一些东西,希望有人指出我的错误。
解决方法
June7提供的链接中描述的解决方法有效:https://www.fmsinc.com/MicrosoftAccess/Forms/Synchronize/LinkedSubforms.asp
简短版本:在主窗体上创建一个不可见的控件元素,并将“控件源”属性设置为子窗体A中的值。然后将相应的子窗体B中的值链接到该控件元素。
这提供了所需的效果。引用奇数仍未解决,但这又是一次。
感谢所有花费时间的人,并感谢6月7日提供解决方案。