2014-01-20 3 views
0

В случае многозначных параметров мы обычно используем функцию соединения, чтобы отображать выбранные значения в текстовое поле. Но что, если бы я хотел показать только не выбранные параметры? IE Если есть 10 значений в выпадающем списке параметра, и я выбрал первые 5 и хотел отобразить только оставшийся 5-й параметр вместо первого. 5. Что я делаю?Отобразить не выбранный параметр в SSRS

ответ

1

Я создал многозначный параметр с именем Param оказавшее своими метками и значение, установленными следующим образом:

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

Затем я создал следующий код в Report Properties -> Код меню:

'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

Сначала нужно создать многозначный параметр («param1»), с доступными значениями в диапазоне от 1 до 10.

Затем создать запрос (QUERY1), который возвращает параметры от 1 до 10 отфильтровывая выбранные значения из «param1» -> где query1.col NOT IN (@ param1)

Затем создайте еще один многозначный параметр («param2»), установите значение по умолчанию (получить значения из запроса), чтобы указать «query1», чтобы заполнить невыбранные значения

используйте текстовое поле со следующим кодом "= Join (Parameters! param1.Value,", ")"

Чтобы сделать запрос1, вы можете использовать союзы.

Вы вернете значения, не выбранные,

Смежные вопросы