【问题标题】:How to Pass nth row value from Main Report to SubReport in SSRS如何将第 n 行值从主报表传递到 SSRS 中的子报表
【发布时间】:2017-03-01 09:08:37
【问题描述】:

我正在使用 SSRS 报告,而主报告使用一个子报告。我想从位于 第 88 行 且列名为 FullYear 的主报表中检索一个单元格数据。

我尝试了以下表达式,

=LookUp(Fields!PLMapperId.Value,88,Fields!FullYear.Value,”ProfitAndLossDataset”)


Function MergeLookup(ByVal items As Object()) As String
If items Is Nothing Then
Return Nothing
End If
Dim suma As String = New String()
Dim ct as Integer = New Integer()
suma = ""
ct = 0
For Each item As Object In items
suma += Convert.ToString(item) + ","
ct += 1
Next
If (ct = 0) Then return 0 else return suma 
End Function

=Code.MergeLookup(Lookup(88,Fields!PLMapperId.Value,Fields!FullYear.Value, "ProfitAndLossDataset"))

它给了我以下错误,

严重性代码描述项目文件行抑制状态 错误 [rsInvalidLookupScope] 文本框的值表达式 “Textbox8”的范围参数对查找无效 功能。范围参数必须设置为字符串常量,即 数据集的名称。

严重性代码描述项目文件行抑制状态 错误 [rsInvalidLookupScope] textrun 的值表达式 ‘Textbox8.Paragraphs[0].TextRuns[10]’有一个范围参数是 对查找函数无效。范围参数必须设置为 作为数据集名称的字符串常量。

我想对要在子报表中呈现的主报表数据执行一些计算。我需要在哪里进行更改才能使其正常工作?

【问题讨论】:

    标签: .net reporting-services ssrs-2008 ssrs-2008-r2 ssrs-2012


    【解决方案1】:

    可能值得一试:在 88 左右插入引号,即“88”

    =Code.MergeLookup(Lookup(88,Fields!PLMapperId.Value,Fields!FullYear.Value, "ProfitAndLossDataset"))

    您输入的源无法被 SSRS 识别,可能需要是实际字段等价物,例如参数,甚至硬编码到 tablix 中(并且可见性设置为隐藏?)

    【讨论】:

      【解决方案2】:

      从子报表中,您无法对父报表中的数据集进行回查。这就是您收到指示未找到数据集的错误的原因。由于看起来您只想从父报表中获取单个值,因此我建议在子报表上创建一个参数,然后将您的值从父报表传递到子报表。

      如果您需要多个值,这种方法显然会变得混乱。在这种情况下,可能值得考虑共享数据集,您可以将它们添加到两个报告中并在一个地方保持同步。

      【讨论】:

      • 是的,我需要将多个单元格值从父报表传递到子报表,所以到目前为止,我在子报表 SP 中再次执行父 SP 并仅在子报表 SP 结果中发送所需的值。工作。
      • 调用子报表中的 SP 是迄今为止获得所需内容的最简单方法,即使感觉很脏。如果这是一个主要的性能问题,我需要更多关于子报告中确切需要的详细信息,以便进一步评论。
      猜你喜欢
      • 1970-01-01
      • 2016-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-17
      相关资源
      最近更新 更多