如何解决访问 - 如何将动态加载的无界子表单链接到主表单?
访问和 vba 的新手。
我有一个绑定的主表单 (FormA),上面有一个组合框和两个未绑定的子表单(subfrmA 和 subfrmB)。 (两个表单都附加到一个表格中,但是我希望它们加载到我放置一个未绑定子表单作为占位符的主表单上)
组合框有两个值“a”和“b”。当 a 被选中时,我希望 subfrm A 加载到表单 A 上。当 b 被选中时,我希望 subfrmB 加载到表单 A 上。 - 到目前为止,我认为这部分工作
但是,当我在主表单上选择一条记录时,关联的子表单不会出现。当我尝试将子表单链接到主表单时,会出现一条错误消息,指出我无法在未绑定的表单之间建立链接。
packageID 是主表单和子表单之间的链接,snd 是所有表单上的隐藏字段。每当 packageID 自动更新时,子表单字段中的 psckageID 也会更新。
Case”A”
Me.subfrmAB.SourceObject=“FormA
Me.packageDetailsID=Me.subfrmAB.packageDetailsID
Case “B”
Me.subfrmAB.SourceObject=“FormB”
Me.packageDetailsID=Me.subfrmAB.packageDetailsID
编辑:所以我最终做的是创建两个子表单 subfrmA(表单 A)和 subfrmB(表单 B)。然后我通过主链接和子链接链接到父表单。
根据用户在主窗体的组合框中选择的内容,我使一个子窗体可见,另一个不可见。
除了 Form B 无法加载外,其他一切都运行良好,但容器已加载。我尝试单独加载表单 B 它仍然无法加载。我也删除了 subfrmA 并且 Form B 仍然无法加载。
这是我编辑的代码:
Select Case Me.Authorization.Text
Case “A”
Me.subfrmA.Visible = True
Me.subfrmB.Visible = False
Me.subfrmA.SourceObject = “Form.A”
Case “B”
Me.subfrmB.Visible = True
Me.subfrmA.Visible = False
Me.subfrmB.SourceObject = “Form.B”
End Select
唯一行不通的是 Me.subfrmB.SourceObject="Form.B" 并且确实有一些东西阻止了表单的加载。我为 Form A 和 Form B 编写了相同的代码,但无法弄清楚 Form B 有什么问题阻止了它的加载。
解决方法
一种选择是创建一个包含一条记录的虚拟表并将子表单绑定到该表。但是您必须使用代码读取和写入所有值。
,当然可以。这是一个对我有用的简单示例。
主窗体绑定到桌面游戏。用作子表单的表单是“裁判”和“团队”。
组合框属性:
控制源:未绑定
行来源:裁判员;板;UmpID;团队;HomeTeam;TeamID
行来源类型:值列表
绑定列:1
列数:3
列宽:1.0";0";0"
代码:
Private Sub Combo108_AfterUpdate()
With Me
.ctrAB.SourceObject = .Combo108
.ctrAB.LinkMasterFields = .Combo108.Column(1)
.ctrAB.LinkChildFields = .Combo108.Column(2)
End With
End Sub
您可以在组合框 RowSource 中为表单名称设置“A”、“B”,然后如果两个表单具有相同的名称键字段,则在 RowSource 中不需要它们,只需硬编码。不完全清楚关键字段名称是什么。然后代码如下:
.subfrmAB.SourceObject = "subfrm" & .Combo108
.subfrmAB.LinkMasterFields ="packageDetailsID"
.subfrmAB.LinkChildFields = "packageDetailsID"
如果要将“A”和“B”保存到主表单记录,则将组合框绑定到字段。然后为了在导航主窗体时为每个记录更改子窗体,也有窗体 OnCurrent 事件中的代码。
在编写表单/子表单之间的交互时需要注意的事情:子表单在主表单之前加载 - 看起来很奇怪但确实如此。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。