首页 > 解决方案 > 在 DoCmd.OpenReport Wherecondition 参数中引用查询中的字段

问题描述

我有一个命令按钮来打开一个带有查询应用过滤器的报告。这样我就可以通过父报表的子报表中的字段值过滤报表,否则过滤条件会更直接。我的设置Wherecondition如下:

Private Sub CmdOpenReport_Click()
    DoCmd.OpenReport "rptName", , , CategoryID = [Queries].[qryFltrRptByCat]!CategoryID
End Sub

当我单击按钮时,我收到以下错误消息:

运行时错误“2465”

Microsoft Access 找不到表达式中引用的字段。

引用查询中的字段的正确语法是什么?

查询在子表单中查找值并找到与CategoryID子表单值匹配的内容。CategoryID这是因为子表单中的数据与父表单中的数据是多对一的关系。

标签: ms-accessvbams-access-2016

解决方案


如果CategoryID是活动形式和字符串,您可以使用:

Docmd.OpenReport "rptName", , , "CategoryID = '" & Me.CategoryID & "'"

如果CategoryID是活动形式和整数/双精度,您可以使用:

Docmd.OpenReport "rptName", , , "CategoryID = " & Me.CategoryID

如果CategoryID在主窗体中但子窗体处于活动状态,您可以使用:

Docmd.OpenReport "rptName", , , "CategoryID = " & Me.Parent.CategoryID

而且您始终可以使用总参考:

Docmd.OpenReport "rptName", , , "CategoryID = " & Forms!YourForm!CategoryID

您可以在这里查看更多信息:


推荐阅读