簡體   English   中英

Report Builder 3.0-如何編寫讀取所有parm名稱和值的SQL?

[英]Report Builder 3.0 - How can I write SQL that reads all parm names and values?

例:

參數: parm

標簽: ParmLabel

價值: value

用戶將選擇所需的參數值,然后運行報告。 加載報告時,我想在報告上顯示一個URL字符串,其中包含所有參數及其選擇的值。 我怎樣才能做到這一點?

棘手的部分:

  1. 參數很多,因此手動編碼每個參數會花費很長時間。 需要一種循環的方式。

  2. 有些參數可能留為空白,有些則可能為NULL

  3. 所有參數可能具有不同的數據類型,因此解決方案將需要獨立於數據類型。

我試過的

這是可行的,但為每個報告和該報告中的每個參數執行此操作並不現實。 此方法要求我進入“數據集屬性”,並將多值參數的值作為逗號分隔的值字符串傳遞,這很煩人。 如果可能的話,我也想避免這種情況。

select

    (@URL 

        + 

            case 
                when len(@parm) <> 0 --This works. The query skips the parm if no values (or only blank values) are passed.
                then '&parm=' + replace(@parm, ',', '&parm=')
                else '' --Parm has no values
                end 

    ) as URLString

我可以在這里為您想到一個技巧。 這未經測試,可能需要拋光。

1)首先構建一個數據集以返回動態表查詢,然后在數據集內添加類似於以下內容的查詢。 這將生成一個具有X條記錄的表。 想法是將X設置為用戶在報表上使用的參數數量。

DECLARE @RowCount INT=4
;WITH T AS( 
    SELECT N=1 
    UNION ALL 
    SELECT N + 1 FROM T WHERE N + 1 <= @RowCount 
) 
SELECT RowNumber=N FROM T 
OPTION (MAXRECURSION 255);

2)將Tablix或表格添加到報表中,並將數據源設置為上面創建的數據源。

3)在步驟2中創建的表中添加參數詳細信息的標簽。

4)添加一個自定義代碼過程以返回每個參數的詳細信息。

Public Function GetParameter(ByVal parameters as Parameters, ByVal index as Integer) as Parameter
    Return parameters(index)
End Function

5)添加一個自定義代碼過程以返回參數計數。

Public Function GetParameterCount(ByVal parameters as Parameters) as Integer
    Return parameters.Count()
End Function

6)用上面的計數填充行計數參數

7)使用其表達式填充標簽

=Code.GetParameter(Parameters,Fields!RowNumber).Value
=Code.GetParameter(Parameters,Fields!RowNumber).Name
=Code.GetParameter(Parameters,Fields!RowNumber).DisplayLabel
...

有關在自定義代碼中訪問報告參數的MSDN文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM