我已经在SSRS中设置了多个报表。这些报告中的每一个都设计良好,并按预期工作。传递给子报表的SSRS“丢失”参数
有人要求将这些报告中的一些报告绑定到一个“主”报告中。我已将工作报告设置为子报告,并从“主”报告填充第一个子报告的所有参数。我已检查并仔细检查了这一事实。
当我试图运行报表处理似乎过长。代替第一子报表的SSRS呈现Error: Subreport could not be shown.
我检查日志文件,我得到一个错误: processing!ReportServer_0-3!e58!04/11/2016-19:42:15::e ERROR: An error has occurred while processing a sub-report. Details: One or more parameters were not specified for the subreport ... Report.Stack trace: at Microsoft.ReportingServices.OnDemandReportRendering.SubReport.FinalizeErrorMessageAndThrow() at Microsoft.ReportingServices.OnDemandReportRendering.SubReport.RetrieveSubreport()
我还检查了的ReportServer ExecutionLogStorage,我可以看到我所有的参数都是填充在参数列中。参数字符串运行约5k个字符。
更多的细节:该报表包含7个参数:
- 管理员 - 单值
- ReportDate - 单值
- ClientStatus - 多选
- DeptStatus - 多选
- 客户端 - 多选
- AccessType - 单值
- DataOnly - 单个值
这些参数在“主”报告中被镜像。我试过使用=Parameters!ClientStatus.Value
和=Split(join(Parameters!ClientStatus.Value,","),",")
方法来传递多选参数,但我真的不确定子报表中缺少哪个参数。据我所知,这些信息没有被记录在任何地方。
我们大多数都放弃了这个“主”报告,但我想留在最前面,因为我想知道它是否会以更微妙的方式影响其他报告。
如果我可以提供更多信息,请让我知道。
确保从主报告到子报告的多值参数作为[@parameterName]传递,而不是“= Parameters!parameterName.Value”。 –
@ErayBalkanli等一下,你能在这里详细说明一下吗?使用上面的ClientStatus参数,当编辑表达式时,最终表达式为'= Parameters!ClientStatus.Value',但当我在子报表属性窗口的参数菜单中查看它时,上面的表达式转换为'[@ClientStatus]'。我已经建立了一个这样的多选参数,它工作得很好。 – MattB
当您使用[@parameterName]或Join(Parameters!parameterName.Value)将报表中的参数传递给子报表时,它是否可以解决您的问题?你试过了吗? –