我有一个命令按钮,可使用查询所应用的过滤器打开报告。这样一来,我就可以通过父报表的子报表中的字段值来过滤报表,否则过滤条件将更加简单。
我将Wherecondition
设置如下:
Private Sub CmdOpenReport_Click()
DoCmd.OpenReport "rptName", , , CategoryID = [Queries].[qryFltrRptByCat]!CategoryID
End Sub
单击按钮时,出现以下错误消息:
运行时错误“ 2465”
Microsoft Access找不到表达式中引用的字段。
引用查询中的字段的正确语法是什么?
查询在子表单中查找值,并找到与子表单值匹配的CategoryID
。这是因为子表单中的数据与父表单中的CategoryID
具有多对一的关系。
答案 0 :(得分:0)
不能像这样直接引用表或查询。使用DLookup()。或参考表格上的控件。必须将变量连接到文字字符串,不要忘记引号:
DoCmd.OpenReport "rptName", , , "CategoryID = " & Me.CategoryID
答案 1 :(得分:0)
如果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
您可以在here中查找更多信息: