Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 子报表查询中共享参数的单个提示参数_Ms Access_Parameters_Report - Fatal编程技术网

Ms access 子报表查询中共享参数的单个提示参数

Ms access 子报表查询中共享参数的单个提示参数,ms-access,parameters,report,Ms Access,Parameters,Report,我在主报告中添加了两个子报告。主报告的结果很好,但[Enter Year]参数出现两次:一次用于每个子报告的查询位置。这是正常的,我可以通过编写代码将其简化为一个提示 但我认为必须有一种方法可以一次性给出一个命名参数,子报表查询将获取并使用它。我想要一个非代码方法来实现这一点,因为接下来我将为许多具有共享参数的子报告创建一个类似的收集报告 我试过: 1.将主窗体上文本字段的控件源设置为=[Enter Year]根本不会引起提示。 2.将主窗体的数据源设置为选择*FROM WHERE year=[

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

但我认为必须有一种方法可以一次性给出一个命名参数,子报表查询将获取并使用它。我想要一个非代码方法来实现这一点,因为接下来我将为许多具有共享参数的子报告创建一个类似的收集报告

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

这是Access 2003

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

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

对我来说,这将问题改为:如何将主报表文本字段的值放入子报表的查询中

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

…除b外,b仍会给出子查询提示


我很抱歉把这个问题弄得支离破碎,但也许它会与其他人的发现之旅相匹配。如果您愿意,我可以发布一个新的简短问题,说明为什么b不起作用。

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

您需要将参数放在主报告后面的查询中,并将其显示为字段:

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

我用一个包含两个子报告的非常基本的报告对此进行了测试,该参数只显示一次并正确过滤。

谢谢!我明天会试试这个。我已经测试过了,但没有那么特别!和是的,它必须在查询中,而不是作为报表的控制源键入的查询中。我在上面看到之前尝试过,但它对查询返回的每一行重复页面。所以我把SELECT变成了SELECTTOP1,现在它可以工作了。我有报告!报告名!TXT也是。你对这些语法有很好的参考吗?无论如何,非常感谢——现在我可以做这个大报告了很高兴你成功了!:当我尝试这样做时,我使用了一个只包含一条记录的主报告表,因此我没有多页问题。另一种解决方法可能是将子报表放在报表页眉/页脚中,但这显然取决于它是否适合您的报表布局。关于语法,这是一个很好的解释。更好的是:您可以只编写condition=Parent!txtYearParam。通过使用父级,您可以重命名报告而不破坏它。
Reports!ReportName.txtYearParam