Reporting services 使用行和列总和的交点作为参数调用详细信息报告
说明: 我有一份汇总ATM交易的报告。此报表具有具有以下属性的Tablix: 排; 货主,码头。 柱;月、日(日期)、小时 行将终端分组为供应商的子级,列将小时分组为日期的子级,日期分组为月份的子级。行组和列组属性指定每个子可见性由其父级切换,如果每个子可见性都要隐藏,则指定默认值。 交叉点的占位符值属性设置为Sum()事务。该操作设置为转到报告,并指定接受的详细报告; 开始日期, 结束日期, 小贩, 终点站 作为详细信息报告的参数。每次单击链接时,它都会调用详细信息报告,并在运行时设置数据集参数。因此,对于“North”,详细报告将显示与供应商“North”关联的41765行 问题: 无论矩阵中的细节分辨率如何,当单击Sum()值调用细节报告时,运行时设置的数据集参数都会发送到细节报告。例如,如果我从一个月到另一个月进行深入调查,我发现供应商“West”在2018-07-01的交易总额为81。如果单击该链接调用详细信息报告,它将返回开始日期和结束日期的总行数(1577行),而不是预期的日期(81行)。此行为在交叉口组合中复制。 请求: 如何调用详细信息报告,使其仅返回当前状态下交叉点分辨率指定的行?Ie:Month\Date:Vendor的总和或Month:Vendor\Terminal的总和或Month\Date\Hour:Vendor\Terminal的总和 完成请求的最佳方法是什么?我的研究没有提出任何有效的建议。我尝试在占位符属性表达式中使用InScope(),但似乎无法正确使用Reporting services 使用行和列总和的交点作为参数调用详细信息报告,reporting-services,ssrs-2012,ssrs-tablix,Reporting Services,Ssrs 2012,Ssrs Tablix,说明: 我有一份汇总ATM交易的报告。此报表具有具有以下属性的Tablix: 排; 货主,码头。 柱;月、日(日期)、小时 行将终端分组为供应商的子级,列将小时分组为日期的子级,日期分组为月份的子级。行组和列组属性指定每个子可见性由其父级切换,如果每个子可见性都要隐藏,则指定默认值。 交叉点的占位符值属性设置为Sum()事务。该操作设置为转到报告,并指定接受的详细报告; 开始日期, 结束日期, 小贩, 终点站 作为详细信息报告的参数。每次单击链接时,它都会调用详细信息报告,并在运行时设置数据集
谢谢你的帮助 您的想法是正确的,您必须使用Inscope 第1步: 对于主报表中用于调用子报表的每个参数,请使用以下表达式
= Iif( Inscope("matrix1_Terminal"), Fields!Terminal.Value, Nothing)
对于数字参数(如月数),设置一个伪值,如-1,因为不允许使用空值
= Iif( Inscope("matrix1_Month"), Fields!Month.Value, -1)
第二步:
在子报表中,更改参数以接受空值(仅适用于字符串和日期)
第三步:
在子报表上,调整查询代码以处理伪参数值
用于字符串或日期
WHERE (terminal = @Terminal or @Terminal IS NULL)
对于数值
WHERE (month = @Month or @Month=-1)
重要强>
不要忘记将其他需要的参数传递给子报表,如原始报表的WHERE中的过滤器
提示:在子报表中,使用临时字符串参数进行调试,并传递Inscope表达式的值