SSRS“丢失”参数传递到子报告

时间:2016-04-12 15:08:30

标签: sql sql-server reporting-services ssrs-2012

我在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 - multiselect
  • DeptStatus - multiselect
  • 客户端 - 多选
  • AccessType - 单值
  • DataOnly - 单值

这些参数在“主”报告中镜像。我已经尝试使用=Parameters!ClientStatus.Value=Split(join(Parameters!ClientStatus.Value,","),",")方法传递多选参数,但实际上我不确定子报表中缺少哪个参数。据我所知,这些信息没有记录在任何地方。

我们大多放弃了这个综合的“主人”报告,但我想继续保持这一点,因为我想知道它是否会以更微妙的方式影响其他报道。

如果我能提供更多信息,请告诉我。

2 个答案:

答案 0 :(得分:0)

子报表中的所有参数都有值吗?
如果没有,参数检查"接受空值" ?

答案 1 :(得分:0)

您可以通过查询SSRS数据库中的ExecutionLog来查找传递的参数。

SELECT [InstanceName]
      ,[ReportID]
      ,[UserName]
      ,[RequestType]
      ,[Format]
      ,[Parameters]
      ,[TimeStart]
      ,[TimeEnd]
      ,[TimeDataRetrieval]
      ,[TimeProcessing]
      ,[TimeRendering]
      ,[Source]
      ,[Status]
      ,[ByteCount]
      ,[RowCount]
  FROM [ReportServer].[dbo].[ExecutionLog]

显然,您需要在SSRS门户上运行报表,而不是在VS或报表设计器中本地运行...