if statement - valores - ¿Utiliza expresiones de SSRS para ver qué opciones ha seleccionado un usuario de un parámetro multivalor?
report builder parametro varios valores (2)
Asumiendo un parámetro llamado Include
, puede usar una expresión como esta:
=IIf(InStr(Join(Parameters!Include.Value, ","), "value1") > 0, Fields!value1.Value, 0)
+ IIf(InStr(Join(Parameters!Include.Value, ","), "value2") > 0, Fields!value2.Value, 0)
+ IIf(InStr(Join(Parameters!Include.Value, ","), "value3") > 0, Fields!value3.Value, 0)
+ IIf(InStr(Join(Parameters!Include.Value, ","), "value4") > 0, Fields!value4.Value, 0)
Utiliza la función Join
para crear una cadena delimitada por comas de los parámetros seleccionados, comprueba si se está seleccionando un valor de parámetro particular y luego agrega el valor correspondiente o 0 al total.
Aquí hay un informe simple con la expresión:
Todos los valores seleccionados:
Dos valores seleccionados:
Estoy intentando configurar un filtro contra una columna "Totales" en un informe de SSRS usando una expresión para el campo.
Tengo una configuración de parámetros multivalor con los valores value1, value2, value3 y value4 como opciones.
Antes del filtro, esta columna de totales simplemente agrega los valores enteros de las diferentes columnas. Deseo agregar funcionalidad a donde pueda verificar cuál de los valores ha seleccionado el usuario.
Similar a abajo (Pseudo código, porque no puedo entender la sintaxis):
=IIF(Parameters!<Parameter>.Label="value1",Fields!value1.Value,0) +IIF(Parameters!<Parameter>.Label="value2",Fields!value2.Value,0) +IIF(Parameters!<Parameter>.Label="value3",Fields!value3.Value,0) +IIF(Parameters!<Parameter>.Label="value4",Fields!value4.Value,0)
Todos los valores en los campos que se agregan son enteros simples. Apreciaría cualquier ayuda que alguien pueda brindar. ¡Gracias!
Puede lograr esto de una manera sencilla sin unir un montón de funciones IIF
y especificar cada campo que se utilizará. ¿Qué sucede si desea cambiar el nombre de un campo o agregar campos?
Usando un código personalizado, podemos tener una forma simple y robusta de realizar este cálculo. Haga clic derecho en la superficie sin diseño de su informe, haga clic en Report Properties...
y luego haga clic en la pestaña Code
. Inserta el siguiente código:
Function CalcTotal (ByVal param As Parameter, flds AS Fields) AS Integer
Dim Result As Integer
Result = 0
If param.IsMultiValue then
For i as integer = 0 to param.Count-1
Result = Result + flds(param.Value(i)).Value
Next
End If
Return Result
End Function
Esto toma el objeto de parámetro (no el valor) y recorre los valores seleccionados para realizar el cálculo utilizando los campos de la colección Fields
.
Ahora para su expresión, solo use:
=Code.CalcTotal(Parameters!Include, Fields)