【问题标题】:VBA DoCmd.Open form on a group of recordsVBA DoCmd.在一组记录上打开表单
【发布时间】:2018-09-26 17:25:27
【问题描述】:

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

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

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

我在网上其他地方看到的一种方法(是的,在导航子表单中)

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

但是这个方法也会返回Table中的所有记录。

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

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

【问题讨论】:

  • 我有很多表单和查询,我不想为我想查看的每种查询都设置一个 frmQASingleView。也许我应该看看 VBA 中是否有办法在我打开表单时设置表单记录源属性?
  • 那么也许你想做Forms!frmQASingleView.RecordSource = "something",对吗?
  • 成功了!我将代码更改为 DoCmd.OpenForm "frmQASingleView" Forms!frmQASingleView.RecordSource = "qQATeam" 并且效果很好。如果你把它变成一个答案,我会给你功劳,非常感谢你!

标签: ms-access vba ms-access-2013


【解决方案1】:

您可以在运行时将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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多