2017-03-01 63 views
0

我正在使用SSRS報告,其中主報告使用一個子報告。我想從位於第88行的主報告中檢索一個單元格數據,並且列名是FullYear如何將主報告中的第n行值傳遞給SSRS中的子報告

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")) 

這是給我下面的錯誤,

嚴重性代碼說明項目文件的線路抑制狀態 錯誤[ rsInvalidLookupS應對]文本框的值表達式 'Textbox8'具有對查找 函數無效的範圍參數。 scope參數必須設置爲數據集名稱的字符串常量 。

嚴重性代碼描述項目文件行抑制狀態 錯誤[rsInvalidLookupScope]爲textrun值表達式 「Textbox8.Paragraphs [0] .TextRuns [10]」具有是 無效的查找功能的範圍參數。 scope參數必須設置爲 字符串常量,該常量是數據集的名稱。

我想對我想要在子報表中呈現的主報表數據執行一些計算。我需要改變以使其工作?

回答

0

這可能是值得一試:將周圍88即 「88」

= Code.MergeLookup引號(!查找(88場PLMapperId.Value,菲爾茲FullYear.Value, 「ProfitAndLossDataset」))

你已經進入不被SSRS認可,可能需要一個實際的場源equivelant即如參數,甚至硬編碼到表矩陣(和可見性設置爲隱藏?)

0

從子報表中,您可以不要在父報告中查找回數據集。這就是爲什麼你收到一個錯誤,指出沒有找到數據集。由於看起來你只是想從父報告中獲得一個值,所以我建議在子報表上創建一個參數,然後將你的值從父項傳遞給子報表。

如果您需要多個值,這種方法顯然會變得雜亂無章。在這種情況下,可能需要考慮共享數據集,您可以將這些數據集添加到兩個報告中並在一個位置保持同步。

+0

是的,我需要將多個單元格值從父報表傳遞給子報表,因此截至目前,我正在執行子報表SP中的父SP,並僅在子報表SP結果中發送所需的值。加工。 –

+0

回顧子報表中的SP是迄今爲止獲得所需內容的最簡單方法,即使它感覺髒。如果這是一個主要的性能問題,我需要更多的細節,以確切地知道你需要在子報告中進一步評論。 – Daniel