0

我在主报告中放了两个子报告。主报告很好,但[Enter Year]参数出现了两次:每个子报告的查询出现一次。这是正常的,我可能可以通过编写代码将其简化为一个提示。

但是我想一定有办法给一个命名参数一次,子报表查询就会捡起来使用。我想要一个非代码方法来做到这一点,因为接下来我将为许多具有共享参数的子报告做一个类似的收集报告。

我试过: 1.将主窗体上的文本字段的控制源设置为=[Enter Year]根本不会引起提示。2.将主窗体的数据源设置为SELECT * FROM <common table> WHERE year=[Enter Year]提示并跳过子报表的数据源,但奇怪的是导致子报表页面无限重复。

这适用于 Access 2003。

编辑: 1.上面不起作用,因为我希望“提示重用”出现在查询中。如果不是将参数用作(标准“时间段”)过滤器,我当然可以将文本字段设置为父项的值。

现在,我将主报告基于一个简单的查询,该查询将提示的参数作为一列包含在内。但出于某种原因,Access 表示对列 (tmpYear) 的引用是“可疑的”/“明确的”(我没有运行英语 Access)。这可能是因为当子报表查询需要时,主报表查询中的列并未“完成”。

对我来说,这将问题更改为:如何将主报告文本字段的值获取到子报告的查询中

编辑2: 我现在明白有两种方法可以解决这个问题:a)编写一个返回提示值的全局函数,并在查询设计中使用该函数。b) 保留带参数的原始查询,并将 myQueryDef.Parameters("") 设置为提示值。

...除了 b) 仍然给出子查询提示。

(我很抱歉提出这个零碎的问题,但也许它会匹配这样一个发现他人的旅程。如果你愿意,我可以发布一个新的简短问题,说明为什么 b)不起作用。)

4

1 回答 1

2

这似乎是可能的(至少根据我对您问题的理解)。

您需要将参数放在主报告后面的查询中,并使其作为一个字段出现:

SELECT YearParam:[Enter Year], <<Other Fields Here>> FROM <<Table NAME>>

然后在主报表上,在报表标题中放置一个文本框,其中包含字段名称(YearParam)的控制源,并命名文本框(例如txtYearParam)。

现在,在子报告(或报告过滤器)后面的每个查询中,使用以下语法使其查看主报告文本框:

Reports!ReportName.txtYearParam

我使用带有 2 个子报告的非常基本的报告对此进行了测试,并且该参数仅出现一次并正确过滤。

于 2013-03-06T15:49:29.880 回答