Compartir a través de


Ejemplos de expresiones (Generador de informes y SSRS)

Las expresiones se usan con frecuencia en los informes para controlar el contenido y la apariencia del informe. Las expresiones se escriben en Microsoft Visual Basic y pueden usar código personalizado de funciones integradas, variables de informe y grupo y variables definidas por el usuario. Las expresiones comienzan con un signo igual (=). Para obtener más información sobre el editor de expresiones y los tipos de referencias que puede incluir, vea Usos de expresiones en informes (Generador de informes y SSRS) y Agregar una expresión (Generador de informes y SSRS) .

Importante

Cuando rdl sandboxing está habilitado, solo se pueden usar determinados tipos y miembros en el texto de expresión en el momento de la publicación del informe. Para obtener más información, consulte Habilitar y deshabilitar el espacio aislado RDL.

En este tema se proporcionan ejemplos de expresiones que se pueden usar para tareas comunes en un informe.

Para ver ejemplos de expresiones para usos específicos, consulte los temas siguientes:

Para obtener más información sobre expresiones simples y complejas, donde puede usar expresiones y los tipos de referencias que puede incluir en una expresión, vea temas en Expresiones (Generador de informes y SSRS). Para obtener más información sobre el contexto en el que se evalúan las expresiones para calcular agregados, vea Ámbito de expresión para totales, agregados y colecciones integradas (Generador de informes y SSRS).

Para obtener información sobre cómo escribir expresiones que usan muchas de las funciones y operadores que también usan los ejemplos de expresiones de este tema, pero en el contexto de escribir un informe, vea Tutorial: Introducción a expresiones.

El editor de expresiones incluye una vista jerárquica de funciones integradas. Al seleccionar la función, aparece un ejemplo de código en el panel Valores. Para obtener más información, vea el cuadro de diálogo Expresión o el cuadro de diálogo Expresión (Generador de informes).

Funciones

Muchas expresiones de un informe contienen funciones. Puede dar formato a los datos, aplicar lógica y acceder a los metadatos del informe mediante estas funciones. Puede escribir expresiones que usen funciones de la biblioteca de ejecución de Microsoft Visual Basic y de los espacios de nombres Convert y Math. Puede agregar referencias a las funciones desde otros ensamblados o desde código personalizado. También puede usar las clases de Microsoft .NET Framework, incluida System.Text.RegularExpressions.

Funciones de Visual Basic

Puede usar funciones de Visual Basic para manipular los datos que se muestran en cuadros de texto o que se usan para parámetros, propiedades u otras áreas del informe. En esta sección se ofrecen ejemplos de algunas de estas funciones. Para obtener más información, vea Miembros de la biblioteca en tiempo de ejecución de Visual Basic en MSDN.

.NET Framework proporciona muchas opciones de formato personalizado, por ejemplo, formatos de fecha específicos. Para obtener más información, vea Tipos de formato en MSDN.

Funciones matemáticas

  • La Round función es útil para redondear números al entero más cercano. La expresión siguiente redondea un valor de 1,3 a 1:
= Round(1.3)  

También puede escribir una expresión para redondear un valor en un múltiplo que especifique, similar a la MRound función en Excel. Multiplique el valor por un factor que crea un entero, redondee el número y, a continuación, divida por el mismo factor. Por ejemplo, para redondear 1.3 al múltiplo más cercano de .2 (1.4), use la expresión siguiente:

= Round(1.3*5)/5  

Funciones de fecha

  • La Today función proporciona la fecha actual. Esta expresión se puede usar en un cuadro de texto para mostrar la fecha en el informe o en un parámetro para filtrar los datos en función de la fecha actual.
=Today()  
  • La DateAdd función es útil para proporcionar un intervalo de fechas basado en un único parámetro. La expresión siguiente proporciona una fecha que es seis meses después de la fecha de un parámetro denominado StartDate.
=DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)  
  • La Year función muestra el año de una fecha determinada. Puede usarlo para agrupar fechas o mostrar el año como una etiqueta para un conjunto de fechas. Esta expresión proporciona el año correspondiente a un determinado grupo de fechas de pedidos de venta. La Month función y otras funciones también se pueden usar para manipular fechas. Para obtener más información, consulte la documentación de Visual Basic.
=Year(Fields!OrderDate.Value)  
  • Puede combinar las funciones en una expresión para personalizar el formato. La siguiente expresión cambia el formato día/mes/año de una fecha a número de la semana/semana/mes. Por ejemplo, del 23/12/2009 a la semana 3 de diciembre:
=Format(Fields!MyDate.Value, "MMMM") & " Week " &   
(Int(DateDiff("d", DateSerial(Year(Fields!MyDate.Value),   
Month(Fields!MyDate.Value),1), Fields!FullDateAlternateKey.Value)/7)+1).ToString  

Cuando se utiliza como un campo calculado en un conjunto de datos, puede utilizar esta expresión en un gráfico para agregar los valores por semana dentro de cada mes.

  • La expresión siguiente da formato al valor SellStartDate como MMM-YY. El campo SellStartDate es un tipo de dato datetime.
=FORMAT(Fields!SellStartDate.Value, "MMM-yy")  
  • La expresión siguiente da formato al valor SellStartDate como dd/MM/aaaa. El campo SellStartDate es un tipo de datos de fecha y hora.
=FORMAT(Fields!SellStartDate.Value, "dd/MM/yyyy")  
  • La CDate función convierte el valor en una fecha. La Now función devuelve un valor de fecha que contiene la fecha y hora actuales según el sistema. DateDiff devuelve un valor Long que especifica el número de intervalos de tiempo entre dos valores date.

En el ejemplo siguiente se muestra la fecha de inicio del año actual.

=DateAdd(DateInterval.Year,DateDiff(DateInterval.Year,CDate("01/01/1900"),Now()),CDate("01/01/1900"))  
  • En el ejemplo siguiente se muestra la fecha de inicio del mes anterior en función del mes actual.
=DateAdd(DateInterval.Month,DateDiff(DateInterval.Month,CDate("01/01/1900"),Now())-1,CDate("01/01/1900"))  
  • La siguiente expresión genera los años de intervalo entre SellStartDate y LastReceiptDate. Estos campos están en dos conjuntos de datos distintos, DataSet1 y DataSet2. La función First(Generador de informes y SSRS), que es una función de agregado, devuelve el primer valor de SellStartDate en DataSet1 y el primer valor de LastReceiptDate en DataSet2.
=DATEDIFF("yyyy", First(Fields!SellStartDate.Value, "DataSet1"), First(Fields!LastReceiptDate.Value, "DataSet2"))  
  • La DatePart función devuelve un valor Entero que contiene el componente especificado de un valor Date determinado. La expresión siguiente devuelve el año para el primer valor de SellStartDate en DataSet1. El ámbito del conjunto de datos se especifica porque hay varios conjuntos de datos en el informe.
=Datepart("yyyy", First(Fields!SellStartDate.Value, "DataSet1"))  

  • La DateSerial función devuelve un valor Date que representa un año, mes y día especificados, con la información de hora establecida en medianoche. En el ejemplo siguiente se muestra la fecha de finalización del mes anterior, en función del mes actual.
=DateSerial(Year(Now()), Month(Now()), "1").AddDays(-1)  
  • Las expresiones siguientes muestran varias fechas en función de un valor de parámetro de fecha seleccionado por el usuario.
Ejemplo Descripción Ejemplo
Ayer =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-1)
Hace dos días =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-2)
Hace un mes =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-1,Day(Parameters!TodaysDate.Value))
Hace dos meses =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-2,Day(Parameters!TodaysDate.Value))
Hace un año =DateSerial(Year(Parameters!TodaysDate.Value)-1,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value))
Hace dos años =DateSerial(Year(Parameters!TodaysDate.Value)-2,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value))

Funciones de cadena

  • Combine más de un campo mediante el uso de operadores de concatenación y constantes de Visual Basic. La expresión siguiente devuelve dos campos, cada uno de ellos en una línea diferente del mismo cuadro de texto:
=Fields!FirstName.Value & vbCrLf & Fields!LastName.Value   
  • Dar formato a fechas y números en una cadena con la Format función . La expresión siguiente muestra los valores de los parámetros StartDate y EndDate en formato de fecha larga:
=Format(Parameters!StartDate.Value, "D") & " through " &  Format(Parameters!EndDate.Value, "D")    

Si el cuadro de texto contiene solo una fecha o un número, debe usar la propiedad Format del cuadro de texto para aplicar formato en lugar de la Format función dentro del cuadro de texto.

  • Las funciones Right, Len y InStr son útiles para devolver una subcadena, por ejemplo, recortar DOMINIO\nombre de usuario a solo el nombre de usuario. La siguiente expresión devuelve la parte de la cadena situada a la derecha de una barra diagonal inversa (\) en un parámetro llamado User:
=Right(Parameters!User.Value, Len(Parameters!User.Value) - InStr(Parameters!User.Value, "\"))  

La siguiente expresión da como resultado el mismo valor que el anterior, usando los miembros de la clase String de .NET Framework en lugar de funciones de Visual Basic:

=Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)  
  • Muestre los valores seleccionados en un parámetro de varios valores. En el ejemplo siguiente se usa la Join función para concatenar los valores seleccionados del parámetro MySelection en una sola cadena que se puede establecer como expresión para el valor de un cuadro de texto en un elemento de informe:
= Join(Parameters!MySelection.Value)  

En el ejemplo siguiente se hace lo mismo que en el ejemplo anterior, así como se muestra una cadena de texto antes de la lista de valores seleccionados.

="Report for " & JOIN(Parameters!MySelection.Value, " & ")  

  • Las Regex funciones de .NET Framework System.Text.RegularExpressions son útiles para cambiar el formato de las cadenas existentes, por ejemplo, dar formato a un número de teléfono. La siguiente expresión usa la Replace función para cambiar el formato de un número de teléfono de diez dígitos en un campo de "nnn-n-n" a "(nnn) n-n":
=System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value, "(\d{3})[ -.]*(\d{3})[ -.]*(\d{4})", "($1) $2-$3")  

Nota:

Compruebe que el valor de Fields!Phone.Value no tiene espacios adicionales y es del tipo String.

Búsqueda

  • Al especificar un campo de clave, puede usar la Lookup función para recuperar un valor de un conjunto de datos para una relación uno a uno, por ejemplo, un par clave-valor. En la siguiente expresión se muestra el nombre del producto de un conjunto de datos ("Product"), dado el identificador de producto con el que debe coincidir:
=Lookup(Fields!PID.Value, Fields!ProductID.Value, Fields!ProductName.Value, "Product")  

LookupSet

  • Al especificar un campo de clave, puede usar la LookupSet función para recuperar un conjunto de valores de un conjunto de datos para una relación uno a varios. Por ejemplo, una persona puede tener varios números de teléfono. En el siguiente ejemplo, suponga que el conjunto de datos PhoneList contiene un identificador de persona y un número de teléfono en cada fila. LookupSet devuelve una matriz de valores. La expresión siguiente combina los valores devueltos en una sola cadena y muestra la lista de números de teléfono para la persona especificada por ContactID:
=Join(LookupSet(Fields!ContactID.Value, Fields!PersonID.Value, Fields!PhoneNumber.Value, "PhoneList"),",")  

Funciones de conversión

Puede usar funciones de Visual Basic para convertir un campo de un tipo de datos a otro. Las funciones de conversión se pueden usar para convertir el tipo de datos predeterminado para un campo en el tipo de datos necesario para los cálculos o para combinar texto.

  • La expresión siguiente convierte la constante 500 en el tipo Decimal para compararla con un tipo de datos monetario de Transact-SQL en el campo valor de una expresión de filtro.
=CDec(500)  
  • La expresión siguiente muestra el número de valores seleccionados para el parámetro multivalor MySelection.
=CStr(Parameters!MySelection.Count)  

Funciones de decisión

  • La Iif función devuelve uno de dos valores en función de si la expresión es true o no. La expresión siguiente usa la Iif función para devolver un valor booleano de True si el valor de LineTotal supera los 100. De lo contrario, devuelve False:
=IIF(Fields!LineTotal.Value > 100, True, False)  
  • Utiliza varias funciones IIF (también conocidas como "IIF anidadas") para devolver uno de los tres valores en función del valor de PctComplete. La expresión siguiente se puede colocar en el color de relleno de un cuadro de texto para cambiar el color de fondo en función del valor del cuadro de texto.
=IIF(Fields!PctComplete.Value >= 10, "Green", IIF(Fields!PctComplete.Value >= 1, "Blue", "Red"))  

Los valores mayores o iguales a 10 se muestran con un fondo verde, los que están entre 1 y 9 se muestran con un fondo azul, y los menores de 1 se muestran con un fondo rojo.

  • Una manera diferente de obtener la misma funcionalidad usa la Switch función . La Switch función es útil cuando tiene tres o más condiciones para probar. La Switch función devuelve el valor asociado a la primera expresión de una serie que se evalúa como true:
=Switch(Fields!PctComplete.Value >= 10, "Green", Fields!PctComplete.Value >= 1, "Blue", Fields!PctComplete.Value = 1, "Yellow", Fields!PctComplete.Value <= 0, "Red",)  

Los valores mayores o iguales a 10 se muestran con un fondo verde; entre 1 y 9, con un fondo azul; igual a 1, con un fondo amarillo; y 0 o menos, con un fondo rojo.

  • Pruebe el valor del ImportantDate campo y devuelva "Rojo" si tiene más de una semana de antigüedad y "Azul" de lo contrario. Esta expresión se puede usar para controlar la propiedad Color de un cuadro de texto en un elemento de informe:
=IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")  
  • Pruebe el valor del PhoneNumber campo y devuelva "No Value" si es null (Nothing en Visual Basic); de lo contrario, devuelve el valor del número de teléfono. Esta expresión se puede usar para controlar el valor de un cuadro de texto en un elemento de informe.
=IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)  
  • Pruebe el valor del Department campo y devuelva un nombre de subinforme o un null (Nothing en Visual Basic). Esta expresión se puede usar para subinformes de análisis en profundidad condicionales.
=IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)  
  • Pruebe si un valor de campo es NULL. Esta expresión se puede usar para controlar la Hidden propiedad de un elemento de informe de imagen. En el ejemplo siguiente, la imagen especificada por el campo [LargePhoto] solo se muestra si el valor del campo no es null.
=IIF(IsNothing(Fields!LargePhoto.Value),True,False)  
  • La MonthName función devuelve un valor de cadena que contiene el nombre del mes especificado. En el ejemplo siguiente se muestra NA en el campo Mes cuando el campo contiene el valor 0.
IIF(Fields!Month.Value=0,"NA",MonthName(IIF(Fields!Month.Value=0,1,Fields!Month.Value)))  

Funciones de informe

En una expresión, puede agregar una referencia a funciones de informe adicionales que manipulan datos en un informe. En esta sección, se ofrecen ejemplos de dos de estas funciones. Para obtener más información sobre las funciones de informe y ejemplos, consulte Referencia de funciones de agregación (Generador de informes y SSRS).

Suma
  • La Sum función puede totalr los valores de un grupo o una región de datos. Esta función puede resultar útil en el encabezado o en el pie de página de un grupo. La expresión siguiente muestra la suma de los datos del grupo o de la región de datos Order:
=Sum(Fields!LineTotal.Value, "Order")  
  • También puede usar la Sum función para los cálculos de agregado condicional. Por ejemplo, si un conjunto de datos tiene un campo denominado State con los valores posibles Not Started, Started, Finished, la siguiente expresión, cuando se coloca en un encabezado de grupo, calcula la suma agregada solo para el valor Finished:
=Sum(IIF(Fields!State.Value = "Finished", 1, 0))  
NúmeroDeFila
  • La RowNumber función, cuando se usa en un cuadro de texto dentro de una región de datos, muestra el número de fila de cada instancia del cuadro de texto en el que aparece la expresión. Esta función puede ser de utilidad para numerar las filas de una tabla. También puede resultar útil para tareas más complejas, como proporcionar saltos de página según el número de filas. Para obtener más información, vea Saltos de página en este tema.

El ámbito que especifique para RowNumber determina cuándo empieza la renumeración. La Nothing palabra clave indica que la función comenzará a contar en la primera fila de la región de datos más externa. Para empezar a contar en regiones de datos anidadas, utilice el nombre de la región de datos. Para empezar a contar dentro de un grupo, use el nombre del grupo.

=RowNumber(Nothing)  

Apariencia de datos del informe

Pueden utilizarse expresiones para manipular la apariencia de los datos en el informe. Por ejemplo, se pueden mostrar los valores de dos campos en un solo cuadro de texto, se puede mostrar información acerca del informe o se puede influir en el modo en que se insertan los saltos de página en el informe.

Encabezados y pies de página

Al diseñar un informe, puede que desee mostrar el nombre del informe y el número de página en el pie de página del informe. Para ello, puede usar las siguientes expresiones:

  • La siguiente expresión proporciona el nombre del informe y la hora a la que se ejecutó. Puede colocarse en un cuadro de texto en el pie de página o en el cuerpo del informe. La fecha y hora se presenta con el formato de fecha corta de .NET Framework:
=Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")  
  • La siguiente expresión, situada en un cuadro de texto en el pie de página de un informe, devuelve el número de página y el total de páginas del informe:
=Globals.PageNumber & " of " & Globals.TotalPages  

En los ejemplos siguientes, se indica cómo mostrar el primer y el último valor de una página en el encabezado de página, de manera similar a lo que aparece en una lista de directorios. En el ejemplo se supone que una región de datos que contiene un cuadro de texto denominado LastName.

  • La expresión siguiente, colocada en un cuadro de texto en el lado izquierdo del encabezado de página, proporciona el primer valor del LastName cuadro de texto de la página:
=First(ReportItems("LastName").Value)  
  • La expresión siguiente, colocada en un cuadro de texto en el lado derecho del encabezado de página, proporciona el último valor del LastName cuadro de texto de la página:
=Last(ReportItems("LastName").Value)  

En el ejemplo siguiente, se indica cómo incluir un total para la página. En el ejemplo se supone que una región de datos que contiene un cuadro de texto denominado Cost.

  • La siguiente expresión, colocada en el encabezado o pie de página, proporciona la suma de los valores del Cost cuadro de texto de la página:
=Sum(ReportItems("Cost").Value)  

Nota:

Solamente puede hacerse referencia a un elemento de informe por expresión en un encabezado o pie de página. Asimismo, puede hacer referencia al nombre del cuadro de texto, pero no a la expresión de datos real del cuadro de texto, en expresiones de encabezado y de pie de página.

Saltos de página

En algunos informes, puede que quiera colocar un salto de página al final de un número específico de filas, en lugar de hacerlo en grupos o elementos de informe, o en adición a ellos. Para ello, cree un grupo que contenga los grupos o registros de detalles que desee, agregue un salto de página al grupo y, a continuación, agregue una expresión de grupo para agrupar por un número especificado de filas.

  • Si se coloca la expresión siguiente en la expresión de grupo, se asigna un número a cada conjunto de 25 filas. Cuando se define un salto de página para el grupo, esta expresión da como resultado un salto de página cada 25 filas.
=Ceiling(RowNumber(Nothing)/25)  

Para permitir que el usuario establezca un valor para el número de filas por página, cree un parámetro denominado RowsPerPage y base la expresión de grupo en el parámetro , como se muestra en la expresión siguiente:

=Ceiling(RowNumber(Nothing)/Parameters!RowsPerPage.Value)  

Para obtener más información sobre cómo establecer saltos de página para un grupo, vea Agregar un salto de página (Generador de informes y SSRS).

Propiedades

Las expresiones no solo se usan para mostrar datos en cuadros de texto. También se pueden utilizar para cambiar el modo en que se aplican las propiedades a los elementos de informe. Es posible cambiar la información de estilo de un elemento de informe o modificar su visibilidad.

Formato

  • La siguiente expresión, cuando se usa en la propiedad Color de un cuadro de texto, cambia el color del texto en función del valor del Profit campo:
=Iif(Fields!Profit.Value < 0, "Red", "Black")  

También puede usar la variable de objeto de Visual Basic Me. Esta variable es otra manera de hacer referencia al valor de un cuadro de texto.

=Iif(Me.Value < 0, "Red", "Black")

  • La expresión siguiente, cuando se usa en la propiedad BackgroundColor de un elemento de informe de una región de datos, alterna el color de fondo de cada fila entre verde pálido y blanco:
=Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")  

Si usa una expresión para un ámbito especificado, es posible que tenga que indicar el conjunto de datos para la función de agregado:

=Iif(RowNumber("Employees") Mod 2, "PaleGreen", "White")  

Nota:

Los colores disponibles son los de la enumeración KnownColor de .NET Framework.

Colores del gráfico

Para especificar colores para un gráfico de formas, puede usar código personalizado para controlar el orden en que los colores se asignan a los valores de punto de datos. Esto le ayuda a usar colores coherentes para varios gráficos que tienen los mismos grupos de categorías. Para más información, vea Especificar colores uniformes en varios gráficos de formas (Generador de informes y SSRS).

Visibilidad

Es posible mostrar y ocultar los elementos de un informe mediante las propiedades de visibilidad del elemento de informe. En una región de datos, como una tabla, se pueden ocultar inicialmente las filas de detalles basándose en el valor de una expresión.

  • La expresión siguiente, cuando se usa para la visibilidad inicial de las filas de detalle de un grupo, muestra las filas de detalle de todas las ventas que superan el 90 por ciento en el PctQuota campo:
=Iif(Fields!PctQuota.Value>.9, False, True)  
  • La expresión siguiente, cuando se establece en la propiedad Hidden de una tabla, muestra la tabla solo si tiene más de 12 filas:
=IIF(CountRows()>12,false,true)  
  • La expresión siguiente, cuando se establece en la Hidden propiedad de una columna, muestra la columna solo si el campo existe en el conjunto de datos de informe después de recuperar los datos del origen de datos:
=IIF(Fields!Column_1.IsMissing, true, false)  

Puede personalizar direcciones URL con los datos de informe y, además, controlar de manera condicional si las dichas direcciones URL se agregan como acciones para un cuadro de texto.

  • La siguiente expresión, cuando se usa como una acción en un cuadro de texto, genera una dirección URL personalizada que especifica el campo EmployeeID del conjunto de datos como parámetro de dirección URL.
="http://adventure-works/MyInfo?ID=" & Fields!EmployeeID.Value  

Para obtener más información, vea Agregar un hipervínculo a una dirección URL (Generador de informes y SSRS).

  • La expresión siguiente controla de forma condicional si debe agregarse una dirección URL a un cuadro de texto. Esta expresión depende de un parámetro denominado IncludeURLs que permita al usuario decidir si debe incluir direcciones URL activas en un informe. Esta expresión se establece como acción en un cuadro de texto. Al establecer el parámetro en False y, a continuación, ver el informe, puede exportar el informe Microsoft Excel sin hipervínculos.
=IIF(Parameters!IncludeURLs.Value,"http://adventure-works.com/productcatalog",Nothing)  

Datos de informe

Pueden utilizarse expresiones para manipular los datos que se usan en el informe. Se puede hacer referencia a parámetros y a otra información del informe. Incluso puede cambiar la consulta que se usa para recuperar datos del informe.

Parámetros

Pueden utilizarse expresiones en un parámetro para modificar su valor predeterminado. Por ejemplo, puede usar un parámetro que filtre datos para un usuario determinado basándose en el identificador de usuario con el que se ejecuta el informe.

  • La siguiente expresión, cuando se usa como valor predeterminado para un parámetro, obtiene el identificador de usuario de la persona que ejecuta el informe:
=User!UserID  
  • Para hacer referencia a un parámetro en un parámetro de consulta, una expresión de filtro, un cuadro de texto u otro área del informe, use la Parameters colección global. En este ejemplo se da por supuesto que el parámetro se denomina Department:
=Parameters!Department.Value  
  • Pueden crearse parámetros en un informe y establecerse como ocultos. Cuando el informe se ejecuta en el servidor de informes, el parámetro no aparece en la barra de herramientas y el lector de informes no puede cambiar el valor predeterminado. Puede usar un parámetro oculto establecido en un valor predeterminado como constante personalizada. Puede usar este valor en cualquier expresión, incluida una expresión de campo. La expresión siguiente identifica el campo especificado por el valor de parámetro predeterminado para el parámetro denominado ParameterField:
=Fields(Parameters!ParameterField.Value).Value  

Código personalizado

En un informe, puede utilizarse código personalizado. El código personalizado se inserta en un informe o se almacena en un ensamblado personalizado que se usa en el informe. Para obtener más información sobre el código personalizado, vea Custom Code and Assembly References in Expressions in Report Designer (SSRS).

Uso de variables de grupo para la agregación personalizada

Puede inicializar el valor de una variable de grupo local en un ámbito de grupo determinado y, a continuación, incluir una referencia a esa variable en expresiones. Una forma de usar una variable de grupo con código personalizado es implementar un agregado personalizado. Para obtener más información, consulte Uso de variables de grupo en Reporting Services 2008 para la agregación personalizada.

Para obtener más información sobre las variables, consulte Colecciones de variables de informe y de grupo - Referencias (Generador de informes y SSRS).

Supresión de valores nulos o cero en tiempo de ejecución

Algunos valores de una expresión pueden evaluarse como NULL o como indefinidos durante el procesamiento del informe. Esto puede crear errores en tiempo de ejecución que resultan en #Error al mostrarse en el cuadro de texto en lugar de la expresión evaluada. La IIF función es especialmente sensible a este comportamiento porque, a diferencia de una instrucción If-Then-Else, cada parte de la IIF instrucción se evalúa (incluidas las llamadas de función) antes de pasarse a la rutina que prueba para true o false. La instrucción =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) genera #Error en el informe generado si Fields!Sales.Value es NADA.

Para evitar esta condición, use una de las estrategias siguientes:

  • Establezca el numerador en 0 y el denominador en 1 si el valor del campo B es 0 o no definido; De lo contrario, establezca el numerador en el valor del campo A y el denominador en el valor del campo B.
=IIF(Field!B.Value=0, 0, Field!A.Value / IIF(Field!B.Value =0, 1, Field!B.Value))  
  • Use una función de código personalizado para devolver el valor de la expresión. En el ejemplo siguiente, se devuelve la diferencia porcentual entre un valor actual y un valor anterior. Esto se puede usar para calcular la diferencia entre dos valores sucesivos y controla el caso perimetral de la primera comparación (cuando no hay ningún valor anterior) y los casos si el valor anterior o el valor actual es null (Nothing en Visual Basic).
Public Function GetDeltaPercentage(ByVal PreviousValue, ByVal CurrentValue) As Object  
     If IsNothing(PreviousValue) OR IsNothing(CurrentValue) Then  
          Return Nothing  
     Else if PreviousValue = 0 OR CurrentValue = 0 Then  
          Return Nothing  
     Else
          Return (CurrentValue - PreviousValue) / CurrentValue  
     End If  
End Function  

La expresión siguiente muestra cómo llamar a este código personalizado desde un cuadro de texto para el contenedor "ColumnGroupByYear" (grupo o región de datos).

=Code.GetDeltaPercentage(Previous(Sum(Fields!Sales.Value),"ColumnGroupByYear"), Sum(Fields!Sales.Value))  

Esto ayuda a evitar excepciones en tiempo de ejecución. Ahora puede usar una expresión como =IIF(Me.Value < 0, "red", "black") en la propiedad Color del cuadro de texto para mostrar condicionalmente el texto en función de si los valores son mayores o menores a 0.

Véase también