VBA DoCmd.Open 表单上的一组记录

VBA DoCmd.Open form on a group of records

我有一个表格 (frmQATeam),可以根据查询汇总记录。 (qQATeam) 它只显示一些较小的字段,所以我想要一个按钮,可以将我带到完整记录 (frmQASingleView) 的全屏视图,包括备注字段和其他较大格式的项目。我想查看汇总表中出现的每条记录,而不仅仅是一条记录。在这个按钮上,我使用 VBA 来拉起完整的视图表单。我试过:

WHERE 方法:DoCmd.OpenForm "frmQASingleView", , ,"Id = " Me.ID 但它只提供选定的记录,而不是 frmQAteam 中显示的所有 6 条记录。

FilterName 方法:DoCmd.OpenForm "QASingleView", , "qQATeamViewAll" 但此方法 returns 中的所有记录 table。

还有我在网上其他地方看到的建议方法(是的,它在导航子表单中)

Dim rs As Object Dim lngBookmark As Long lngBookmark = Me.ID DoCmd.OpenForm "frmQASingleView" Set rs = Forms!MainMenu.Form!btnManagersMenu.Form!NavigationSubform.Form.RecordsetClone rs.FindFirst "ID = " & lngBookmark

但是这个方法也returns所有记录在Table.

我最后的尝试是设置一个宏,尽管人们警告我不要使用 OpenForm 设置并根据查询设置过滤器。在这种情况下,我发现您不能使用宏来过滤基于两个或多个具有关系的 table 的查询。

我束手无策,希望有人能提供帮助。

您可以在运行时将 RecordSource 更改为 frmQASingleView。因此,如果您将其更改为使用与第一种形式相同的查询 qQATeam,则它必须显示相同的 6 行。 :-)

建议您先打开表格为空隐藏。

DoCmd.OpenForm FormName:="frmQASingleView", View:=acNormal, WhereCondition:="1=2", WindowMode:=acHidden

然后更改它的 RecordSource 并取消隐藏它。

Forms!frmQASingleView.RecordSource = "qQATeam"
DoCmd.OpenForm FormName:="frmQASingleView" View:=acNormal, WindowMode:=acWindowNormal