2011-05-27 45 views
2

我試圖在報告中的文本字段上添加可選過濾器。我已經嘗試在數據集中設置它,但它將其視爲必需的過濾器,因此如果未填充它,則不會返回任何結果。它需要使用Like運算符。有什麼建議?在SSRS 2008中添加可選過濾器

回答

1

我不認爲你可以在DataSet Properties/Filters中創建一個可選的過濾器,在那裏添加過濾器意味着返回匹配所有過濾器條件的結果,所以它是所有過濾器之間的「AND」邏輯關係,而不是「OR」。

我的建議是在數據集的查詢設計器中使用過濾器,您可以在其中定義「OR」關係以過濾掉數據。例如:Your_Text_Field =「SomeValue」或Your_Text_Field爲空。

+0

不知道如何做到這一點。我的數據源是Oracle。我不知道如何在類似的子句中放置一個變量('%:varible%'不起作用)。 – sukach 2011-05-31 19:41:24

+0

是的,你可以,它很簡單。我會提供一個答案。 – maplemale 2015-11-11 22:25:18

6

當我爲這個問題輸入一個解決方案時,我意識到一個非常簡單的解決方案(現在我更好地理解它是如何工作的)。

以下是我所做的: 由於洪指出必須滿足所有過濾條件,所以我扭轉了思維。我將現有的「IN」過濾器移到查詢中,並直接將參數提供給查詢。然後我通過報告中的「LIKE」文本過濾器創建了一個默認值「*」,以便它立即返回所有內容。

以下是我所能做的: 只是最後一部分。添加了默認值「*」的「LIKE」過濾器,以便立即返回所有內容。

0

儘管我同意大多數時候最好將參數發送回存儲過程或數據層以減少返回的數據量,但我有一種情況,即參數處理通過過濾器在RDL文件中。由於這種獨特的情況,我發現這個解決方案可以讓你在RDL文件中創建一個可選過濾器。

http://www.andrewshough.com/development/sqlserver/ssrs/optional-filter-in-ssrs/

這是一個偉大的博客文章就如何創建一個可選的過濾器容易一步一步的指示。

請注意:這是我的博客,但我以爲這個解決方案是偉大的,我需要什麼,我希望它可以幫助別人,當他們谷歌的「可選的過濾器在SSRS」像我一樣。

+2

現在鏈接已損壞。 – 2015-06-25 15:13:20

+0

看起來像安德魯的網站已關閉。我通過Twitter與Andrew聯繫並讓他知道。我確信他正在努力。 – Paul 2015-06-25 15:37:13

0

我發現一個帖子,它解決了我爲設置報表消費者的過濾器設置a)所有多值字段被選中的問題,因此用戶b)可以根據需要指定他/她的選擇。

卡西姆2010年12月8日8:55 AM#

在報告時,我們希望爲默認的多值參數,以「全選」下面是步驟。

  1. 從Report菜單中打開Report參數窗口。

  2. 從窗口的左側選擇Report參數。

  3. 選擇「多值」複選框並選擇適當的「可用值」。

  4. 在默認值下選擇'從查詢'單選按鈕'。

  5. 選擇適當的'數據集'。

  6. 選擇適當的'值字段'。

  7. 保存報告並選擇預覽標籤。您可以在多值>參數列表中找到所有項目,並顯示所有選定項目的結果。

上找到:http://blogs.msdn.com/b/bimusings/archive/2007/05/07/how-do-you-set-select-all-as-the-default-for-multi-value-parameters-in-reporting-services.aspx

(郵政在評論相當中間走了過來。)

1

我也同意,大部分的時間,最好的PARAMS送回到SQL。由於這不是OP所要求的,所以這是我找到的最好的選擇。其實很簡單。

  • 添加您的參數與適當的數據類型。在這種情況下,我們使用「City」的 示例(文本/字符串字段)。

  • 選中參數上的「允許空值」。

  • 將過濾器添加到Tablix,表或數據集中。

  • 在表達式中,選擇要過濾的字段。選擇合適的運營商,在我的城市數據集示例中,輸入的值爲:

    = IIF((Parameters!City.Value Is Nothing),Fields!City.Value,Parameters!City.Value )

+0

只是工作!如果參數值沒有使用Field值,則使用參數值來測試字段值 – Sonny123 2017-02-22 10:47:46

+0

= IIF(IsNothing(Parameters!Surname.Value),Fields!Surname.Value,Parameters!Surname.Value) – Sonny123 2017-02-22 10:59:03

0

您可以通過在數據集篩選器上使用表達式來完成此操作。 檢查this