首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Access中数据表视图中的多个子窗体

Access中数据表视图中的多个子窗体
EN

Stack Overflow用户
提问于 2014-10-14 06:23:47
回答 1查看 4.2K关注 0票数 0

我的主访问表单有两个子表单,我熟悉使用linking字段链接父窗体和子窗体,以及在每个子窗体上链接子字段。

在我的表单上,Subform1链接到主窗体上的ID,而Subform2链接到Subform1上的ID。

我以前已经让它工作了,如果用户单击子表单1中的记录,那么子表单2就会被动态更新以显示特定的数据(这是将subform2设置为单个表单视图的时候)。

我要做的是,在数据表视图中获取两个子窗体,然后单击subform1上的一个记录,然后请求subform2查询在subform2中选择的项的所有相关记录。

如果使用本机访问功能,这是否可能,否则,是否有VBA解决方案?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-16 00:37:34

您将无法使用本机访问功能来完成此操作:为此,Subform2需要是subform1的一个子级。

但是,您应该能够在VBA中很容易地做到这一点。

在Subform1控件中显示的窗体中,创建一个Form_Current事件。每当Subform1中当前记录发生变化时,这都会触发。然后使用该事件直接或间接地重置subform2的记录源。

例如,假设MainForm显示一个名为Person的表中的信息,Subform1显示有关人员与我们组织之间的接触事件的信息,而Subform2则显示这些联系人事件中的通信详细信息。

数据将如下所示:

代码语言:javascript
运行
复制
Mainform: SELECT * FROM Person
Subform1:   SELECT * FROM PersonEpisode
Subform2:     SELECT * FROM EpisodeCommunication

您知道,subform1中的数据可以保存为仅与Mainform上显示的人有关的数据,也可以使用Mainform的Form_Current事件来更改subform1的记录源,如下所示:

代码语言:javascript
运行
复制
private sub Form_Current()    'on mainform
    Subform1.Form.RecordSource = "SELECT * FROM PersonEpisode WHERE PersonID = " & me.ID
end sub

然后,使用form_Current中的subform1来保持subform2到subform1的电流:

代码语言:javascript
运行
复制
private sub Form_Current()    'in Subform1
    Forms!Mainform!Subform2.Form.Recordsource = "SELECT * FROM EpisodeCommunication WHERE EpisodeID = " & me.EpisodeID
end sub

这应该没问题的。如果你愿意的话,你可以:

代码语言:javascript
运行
复制
private sub Form_Current()    'in Subform1
    Me.Parent!Subform2.Form.Recordsource = "SELECT * FROM EpisodeCommunication WHERE EpisodeID = " & me.EpisodeID
end sub

这在功能上与前面的定义相同,但从调用中删除了名称" MainForm“,这意味着如果有人决定更改MainForm的名称,或者在将来的某个时候将此功能克隆到另一个表单,则无需重写或修改该代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26353956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档