SSRS - 我可以硬编码选择ALL作为多值参数

时间:2012-10-05 01:31:20

标签: ssrs-2008-r2

我正面临default values for a cascading parameters的已知问题。由于我的参数是在MDX中编码的,因此无法找到解决方法的任何特定想法。

我没有尝试更改参数查询,而是考虑检查是否有可能硬编码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参数吗?

感谢您的任何一点:)

2 个答案:

答案 0 :(得分:1)

可以在自定义代码中完成。虽然不是直截了当的。我在使用SharePoint列表作为源时使用过。应该适用于此。我将使用示例“客户端”参数。

  1. 创建参数@ClientHelper。将其设置为隐藏的多值,可用值来自数据集查询以及数据集查询中的默认值。
  2. 创建参数@Client。将其设置为可见,而不是多值,以及“指定值”的可用值。将标签列留空并输入“= Split(Code.RemoveDups(JOIN(参数!ClientHelper.Value,”|“)),”|“)”作为值表达式。您可以将默认值设置为您想要的任何值。
  3. 请注意,@ ClientHelper必须在参数列表中的@Client之前。
  4. 您需要的自定义鳕鱼如下。如果您不需要删除重复项,也可以更改它以满足您的需求。

    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
    

    现在,您仍然需要在执行级联的数据集查询中使用过滤器和逻辑...但这会为您提供“全部”选项。

答案 1 :(得分:0)

您是否可以转到参数的默认值并使用“从查询中获取值”,然后提供包含所有值的查询?