我在主报告中放了两个子报告。主报告很好,但[Enter Year]
参数出现两次:每个子报表的查询出现一次。这是正常的,我可以通过编写代码将其减少到一个提示符。
但我认为必须有一种方法可以提供一次命名参数,子报告查询会将其提取并使用它。我想要一个非代码方法来执行此操作,因为接下来我将针对具有共享参数的许多子报告执行类似的收集报告。
我试过了:
1.将主窗体上的文本字段的控件源设置为=[Enter Year]
不会导致提示。
2.将主窗体的数据源设置为SELECT * FROM <common table> WHERE year=[Enter Year]
会导致提示并跳过子报告的提示,但奇怪的是导致子报告页面无限重复。
这适用于Access 2003。
修改 1.上面不起作用,因为我希望“快速重用”在查询中。如果不是将参数用作(标准“时间段”)过滤器,我当然可以将文本字段设置为父项的值。
现在我将主报告基于一个简单的查询,其中包含提示参数作为列。但由于某些原因,Access表示对列(tmpYear)的引用是“可疑的”/“明确的”(我没有运行英语访问)。可能这是因为当子报表查询需要时,主报表查询中的列不会“完成”。
对我而言,这会将问题更改为: 如何将主报告文本字段的值添加到子报告的查询中 。
编辑2: 我现在明白有两种方法可以解决这个问题: a)编写一个返回提示值的全局函数,并在查询设计中使用该函数。 b)使用参数保留原始查询,并将myQueryDef.Parameters(“”)设置为提示值。
...除了b)仍然提供子查询提示。
(我很抱歉这是一个零碎的问题,但也许它会匹配这样一个发现他人的旅程。如果你想我可以发一个新的简短问题,为什么b)不起作用。)< / p>
答案 0 :(得分:2)
这似乎是可能的(至少通过我对你的问题的理解)。
您需要将参数放在主报告后面的查询中,并将其作为字段显示:
SELECT YearParam:[Enter Year], <<Other Fields Here>> FROM <<Table NAME>>
然后在主报表上,在报表页面中放置一个文本框,其中包含字段名称(YearParam)的控制源,并命名文本框(例如,txtYearParam)。
现在,在子报告背后的每个查询(或报告过滤器)上,使用以下语法查看主报告文本框:
Reports!ReportName.txtYearParam
我使用包含2个子报告的非常基本的报告对此进行了测试,该参数仅出现一次并正确过滤。