在SSRS中显示未选择的参数

时间:2014-01-20 14:57:27

标签: reporting-services ssrs-2008

在多值参数的情况下,我们通常使用连接函数将所选值显示到文本框中。但是如果我想要只显示未选择的参数?IE如果下拉列表中有10个值一个参数,我选择了前5个,只想显示剩下的5个参数而不是前5个。我该怎么办?

2 个答案:

答案 0 :(得分:1)

我创建了一个名为 Param 的多值参数,其标签和值设置如下:

Label    Value
======   =====
Label1     1
Label2     2
Label3     3
Label4     4
Label5     5

然后,我在报告属性 - >中创建了以下代码。代码菜单:

    'Global array objects to hold the total and selected values
Private Dim parameterList() AS string
Private Dim selectedParameters() AS string


    'populates the list of all parameters using split and returns the input string
Public Function SetParameterList(nextParameter as String) AS String

    parameterList = Split(nextParameter ,",")

    Return nextParameter

End Function


    'populates the list of selected parameters using split and returns the input string
Public Function SetSelectedParameters(delimitedParameters as String) AS String

    selectedParameters = Split(delimitedParameters,",")

    Return delimitedParameters 

End Function


    'Returns the not selected parameters
Public Function GetNotSelectedParameters() AS String

    Dim notSelected As String
    Dim i as Integer
    Dim x as Integer

            'Loop through each value in the all parameters array...
    For i = 0 to parameterList.GetUpperBound(0)

                    '...for each one of those values check it against the selected parameters
        For x = 0 to selectedParameters.GetUpperBound(0)

                            'Where there is a match, set the all parameters value to a string unlikely to be a genuine parameter value
            IF parameterList(i) = selectedParameters(x) Then

                parameterList(i) = "!*!"

            End IF
        Next

    Next

            'Join the all parameters array back into a string 
    notSelected = Join(parameterList, ", ") 


            'Remove the !*! values added earlier from the middle and the end of the string
    notSelected = Replace(notSelected, "!*!, ", "")
    notSelected = Replace(notSelected, ", !*!", "")


    Return notSelected

End Function

要使用此代码,我使用以下表达式创建了3个文本框:

 =Code.SetParameterList(Join(LookUpSet(1,1,Fields!ParamLabel.Value,"DataSet1"),","))

 =Code.SetSelectedParameters(Join(Parameters!Param.Label, ","))

 =Code.GetNotSelectedParameters()

注意:隐藏任何这些文本框的输出,您可以将函数返回值设置为“”。

我想我的代码可以在很大程度上得到改进,但这可以完成工作,至少应该指向正确的方向。

答案 1 :(得分:1)

首先创建一个多值参数(“param1”),可用值范围为1到10.

然后创建一个查询(query1),它返回从1到10过滤掉的参数 从“param1”中选择的值 - >其中query1.col不是IN(@ param1)

然后创建另一个多值参数(“param2”),设置默认值(从查询中获取值)指向“query1”以填充未选择的值

使用带有以下代码的文本框“= Join(参数!param1.Value,”,“)”

要创建query1,您可以使用联合。

您将获得未选择的值,