2016-04-12 58 views
1

我已经在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,","),",")方法来传递多选参数,但我真的不确定子报表中缺少哪个参数。据我所知,这些信息没有被记录在任何地方。

我们大多数都放弃了这个“主”报告,但我想留在最前面,因为我想知道它是否会以更微妙的方式影响其他报告。

如果我可以提供更多信息,请让我知道。

+0

确保从主报告到子报告的多值参数作为[@parameterName]传递,而不是“= Parameters!parameterName.Value”。 –

+0

@ErayBalkanli等一下,你能在这里详细说明一下吗?使用上面的ClientStatus参数,当编辑表达式时,最终表达式为'= Parameters!ClientStatus.Value',但当我在子报表属性窗口的参数菜单中查看它时,上面的表达式转换为'[@ClientStatus]'。我已经建立了一个这样的多选参数,它工作得很好。 – MattB

+0

当您使用[@parameterName]或Join(Parameters!parameterName.Value)将报表中的参数传递给子报表时,它是否可以解决您的问题?你试过了吗? –

回答

0

在subreport中的所有参数都有一个值吗?
如果不是,用“接受空值”检查参数吗?

+0

它们设置为从主报告接收值。我已经设置了子报表的每个参数,以便从主报表中传递一个值。 “接受空值”在这里不是一个选项 - 参数必须被填充。有什么方法可以查看实际传递给子报表的内容吗? – MattB

+0

顺便说一句,这将更好地发布为对原始问题的评论,而不是一个答案。 – MattB

+0

“接受空值”是您用作子报告的报告的参数。 如果所有参数都填充在主报告中,那么我唯一看到的是 –