2012-10-05 65 views
0

我遇到一個已知的問題default values for a cascading parameters。由於我的參數在MDX中編碼,因此找不到任何特定的解決方法。SSRS - 我可以硬編碼選擇所有的多值參數

而不是試圖改變參數查詢,我想檢查是否有一個可能的硬編碼SELECT ALL級聯,或任何參數的事情。

這是我的參數數據集:

WITH 
    MEMBER [Measures].[ParameterValue] AS [Organisation].[Cost Centre Code and Description].CURRENTMEMBER.UNIQUENAME 
SELECT 
    [Measures].[ParameterValue] 
ON COLUMNS , 
[Organisation].[Cost Centre Code and Description].[Cost Centre Code and Description].ALLMEMBERS ON ROWS 
FROM 
(SELECT STRTOSET(@CC_Caption, CONSTRAINED) ON COLUMNS FROM 
[CUBE]) 

有沒有人有一個想法如何硬編碼SELECT ALL一個SSRS參數?

感謝您的任何點:)

+0

感謝編輯AKLUTH :) –

回答

0

你能不能去默認值參數,並使用「獲取從查詢值」,然後提供具有所有值的查詢?

1

它可以在自定義代碼中完成。不是直截了當的。我在使用SharePoint列表作爲源時使用過。這裏應該適用。我將使用示例「客戶端」參數。

  1. 創建參數@ClientHelper。將它設置爲來自數據集查詢的隱藏的多值可用值以及來​​自數據集查詢的默認值。
  2. 創建一個參數@Client。將其設置爲可見值,而不是多值,以及「指定值」的可用值。將標籤列留空並將「= Split(Code.RemoveDups(JOIN(Parameters!ClientHelper.Value,」|「)),」|「)」作爲值表達式。您可以將默認值設置爲任何您想要的值。
  3. 請注意,@ClientHelper必須在參數列表中的@Client之前。

你需要的自定義鱈魚在下面。如果你不需要刪除dups,你可以改變它來滿足你的需要。

 
Public Shared Function RemoveDups(ByVal items As String) As String 
Dim noDups As New System.Collections.ArrayList() 

Dim SpStr as String() 
SpStr = Split(items ,"|") 

For i As Integer=0 To Ubound(Spstr) 
If Not noDups.Contains(SpStr(i).Replace("&","&").Trim()) Then 
noDups.Add(SpStr(i).Replace("&","&").Trim()) 
End If 
Next 

Dim uniqueItems As String() = New String(noDups.Count-1){} 
noDups.CopyTo(uniqueItems) 
uniqueItems.Sort(uniqueItems) 

Dim strRetValue AS String = String.Join("|", uniqueItems) 
strRetValue = "All|" + strRetValue 
Return strRetValue 
End Function 

現在,你仍然需要有一個適當的過濾器和邏輯在做級聯的數據集查詢......但是這給你的「ALL」選項。