如何在SSRS中将主报表中的第n行值传递给SubReport

时间:2017-03-01 09:08:37

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

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

Main Report

Sub Report

我尝试了以下表达式,

=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]文本框的Value表达式   “Textbox8”具有对查找无效的作用域参数   功能。 scope参数必须设置为字符串常量   数据集的名称。

     

严重级代码描述项目文件行抑制状态   错误[rsInvalidLookupScope] textrun的Value表达式   'textbox8.Paragraphs [0] .TextRuns [10]'的范围参数是   对查找功能无效。 scope参数必须设置为a   字符串常量,它是数据集的名称。

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

2 个答案:

答案 0 :(得分:0)

值得一试:在88左右插入引号,即" 88"

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

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

答案 1 :(得分:0)

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

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