簡體   English   中英

數據集的SSRS條件執行

[英]SSRS conditional execution of dataset

我在 SSRS 報告中有兩個不同的數據集,它們提供了不同數量的輸出字段。我已將這兩個數據集用於報告中的兩個不同表中。

1) 一張表將根據條件一次顯示執行中的輸出。

實際上,在運行報告時,兩個數據集正在執行 SP,顯示輸出需要更多時間。

要求:我需要根據條件一次執行一個數據集SP。其他數據集SP不應該執行。

示例:Dataset1 執行 Sp1 Dataset2 執行 Sp2

Table1 使用 Sp1 Table2 使用 Sp2

通常在執行報表 Table1 時會顯示輸出(基於默認參數選擇)

但是 SP1 和 SP2 是同時執行的。所以報告需要更多時間來顯示輸出。

我需要根據條件一次執行 1 個 SP。這樣其他數據集 SP 就不會執行。

步驟 1:首先為數據集創建虛擬 SP 。該 SP 應原始 SP1 具有相同的輸入參數相同的輸出字段,但給出零輸出行。對數據集 2 的 SP2 執行相同操作

步驟 2:在數據集屬性中選擇 StoredProcedure 圖標並在 Fx 列中添加以下代碼

=IIF(Parameters!ManagerID.Value= -1,"SP1","DummySP")

注意:創建的 DummySP 應該與 SP1 相同,對數據集 2 執行相同的操作......這有效。

您必須根據接收到的參數控制 tablix 的可見性,此外,您可以在兩個查詢上創建參數以控制執行位置以避免執行,例如

Where @Condition = 1 AND ( Your WHERE )

至於那一袋性能,您根本不想運行其他SP ,在這種情況下,根據我的經驗,最好的方法是修改您的stored procs以根據您決定什么數據添加一個new parameter設置為調用(意味着要提取的數據)。

因此,如果參數表示不需要特定的 SP,請不要使用IF-ELSE組合在 SP 中運行代碼並返回空白單行。

然后,最重要的是,您可以hideshow您的 Tablix。

希望這是有道理的?

如果column countdata types相同,您始終可以使用表達式來決定要調用的stored-proc

我看過這個答案,很好,但是要創建兩個 SP,有時非常麻煩。 有時報表使用一個SP 的很多。 這意味着必須復制所有 SP。 如果您將報告翻倍……這意味着它們需要終生維護和改進。

相反,我有另一個解決方案:

第 1 步:我創建了一個SP,並使用了無論如何已經存在的參數之一。

步驟2:在DS\\Report的參數映射中,不是將發送到報表的參數原樣發送給DS,而是可以寫一個表達式,表示如果我想顯示這個SP的數據,我發送參數發送到報表,如果我不想顯示這個數據,我會發送不同的參數,這會導致SP不返回數據。

所有這些當然只有當它是一個帶有允許上述參數的過程時。 也可以為此創建一個特殊參數。

下面是一張圖片和一個表達式的例子: 在此處輸入圖片說明

和表達式:

=IIf(Parameters!Display_xxx.Value=1,Parameters!yyy.Value,0)

暫無
暫無

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

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