Ejemplos de expresiones (Reporting Services)

Las expresiones se usan habitualmente en los informes para controlar su contenido y apariencia. Las expresiones se escriben en MicrosoftVisual Basic y pueden usar funciones integradas, código personalizado, variables globales, variables de informe y grupo, y variables definidas por el usuario.

En este tema se incluyen ejemplos de expresiones que se pueden usar en los informes para realizar tareas comunes.

  • Funciones de Visual Basic: ejemplos de funciones de fecha, de cadena, de conversión y condicionales de Visual Basic.

  • Funciones de informe: ejemplos de agregados y otras funciones de informe integradas.

  • Apariencia de los datos del informe: ejemplos relacionados con el cambio de apariencia de un informe.

  • Propiedades: ejemplos para establecer las propiedades de elementos de informe a fin de controlar el formato o la visibilidad.

  • Parámetros: ejemplos relacionados con el uso de parámetros en una expresión.

  • Código personalizado: ejemplos de código personalizado incrustado.

Para obtener ejemplos de expresiones para usos específicos, vea los siguientes temas:

Para obtener más información sobre las expresiones simples y complejas, dónde se pueden usar las expresiones y los tipos de referencias que se pueden incluir en una expresión, vea los temas incluidos en Trabajar con expresiones de informe. Para obtener más información sobre el contexto en el que se evalúan las expresiones para calcular agregados, vea Calcular totales y otros agregados (Reporting Services).

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

Funciones

Muchas expresiones de un informe contienen funciones. Con estas funciones, se puede dar formato a los datos, aplicar lógica y obtener acceso a los metadatos del informe. Puede escribir expresiones que usen funciones de la biblioteca en tiempo de ejecución de MicrosoftVisual Basic y de los espacios de nombres System..::..Convert y System..::..Math. Puede agregar referencias a funciones desde otros ensamblados o desde código personalizado. También puede usar clases de Microsoft.NET Framework, incluida la clase System.Text.RegularExpressions. Para obtener más información acerca de las funciones de Visual Basic, vea "Visual Basic Run-Time Library" en msdn.microsoft.com.

.NET Framework proporciona muchas formas de especificar formatos personalizados, como formatos de fecha específicos. Para obtener más información, vea Aplicar formato a tipos en MSDN.

Funciones de Visual Basic

Las funciones de Visual Basic se pueden usar para manipular los datos que se muestran en los cuadros de texto o que se emplean en los parámetros, las propiedades u otras áreas del informe. En esta sección se ofrecen ejemplos que muestran algunas de estas funciones. En estos ejemplos se especifican constantes de Visual Basic como valores de enumeración (por ejemplo, DateInterval.Month). Aunque el editor de expresiones no admite Intellisense para esos valores, estos se compilan correctamente en una expresión.

Para obtener más información acerca de las funciones de Visual Basic, vea la documentación de Visual Basic.

Funciones de fecha

  • La función Today proporciona la fecha actual. Esta expresión puede utilizarse en un cuadro de texto para mostrar la fecha en el informe o puede utilizarse en un parámetro para filtrar los datos por la fecha actual.

    =Today()
    
  • La función DateAdd es útil para suministrar un intervalo de fechas basado en un solo parámetro. La expresión siguiente proporciona una fecha que es seis meses posterior a la fecha de un parámetro de tipo System..::..DateTime denominado StartDate.

    =DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)
    
  • La función Year muestra el año correspondiente a una fecha determinada. Se puede utilizar para agrupar las fechas o para mostrar el año como etiqueta para un conjunto de fechas. Esta expresión proporciona el año correspondiente a un determinado grupo de fechas de pedidos de ventas. También se pueden utilizar la función Month y otras funciones para manipular las fechas. Para obtener más información, vea la documentación de Visual Basic.

    =Year(Fields!OrderDate.Value)
    

Funciones de cadena

  • Combine varios campos con 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 
    
  • Aplique formato a las fechas y a los números de una cadena con la función Format. 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 únicamente contiene una fecha o un número, deberá aplicar formato con la propiedad Format del cuadro de texto, no con la función Format dentro del cuadro de texto.

  • Las funciones Right, Len e InStr son útiles para devolver una subcadena; por ejemplo, para reducir DOMINIO\nombreDeUsuario al nombre de usuario solamente. La siguiente expresión devuelve la parte de la cadena situada a la derecha de una barra diagonal inversa (\) en un parámetro denominado User:

    =Right(Parameters!User.Value, Len(Parameters!User.Value) - InStr(Parameters!User.Value, "\"))
    

    Con la expresión siguiente, se obtiene el mismo resultado que con la anterior, pero se usan miembros de la clase System..::..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 función Join para concatenar los valores seleccionados del parámetro MySelection en una sola cadena que se podrá establecer como una expresión para el valor de un cuadro de texto en un elemento de informe:

    = Join(Parameters!MySelection.Value)
    
  • Las funciones Regex de la clase RegularExpressions de .NET Framework son útiles para cambiar el formato de cadenas existentes; por ejemplo, para aplicar formato a un número de teléfono. La expresión siguiente usa la función Replace para cambiar el formato "nnn-nnn-nnnn" de un número de teléfono de diez dígitos de un campo por el formato "(nnn) nnn-nnnn":

    =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 de tipo System..::..String.

Funciones de conversión

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

  • La expresión siguiente convierte la constante 500 al tipo Decimal a fin de compararla con un tipo de datos money 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 de varios valores MySelection.

    =CStr(Parameters!MySelection.Count)
    

Funciones de decisión

  • La función Iif devuelve un valor u otro en función de si la expresión es TRUE o no. En la expresión siguiente, se usa la función Iif para devolver el valor booleano True si el valor de LineTotal es mayor que 100. En caso contrario, devuelve False:

    =IIF(Fields!LineTotal.Value > 100, True, False)
    
  • Use varias funciones IIF (lo que también se conoce como "funciones IIF anidadas") para devolver un valor entre tres posibles dependiendo del valor de PctComplete. La expresión siguiente se puede situar en el color de relleno de un cuadro de texto para cambiar el color de fondo en función del valor existente en dicho cuadro de texto.

    =IIF(Fields!PctComplete.Value >= 10, "Green", IIF(Fields!PctComplete.Value >= 1, "Blue", "Red"))
    

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

  • Otra forma de obtener la misma funcionalidad es con la función Switch. La función Switch resulta de gran utilidad cuando se necesitan probar tres condiciones o más. La función Switch devuelve el valor asociado a la primera expresión en 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 que 10 se muestran con un fondo verde, los valores entre 1 y 9 se muestran con un fondo azul, los valores iguales que 1 se muestran con un fondo amarillo, y los valores iguales o menores que 0 se muestran con un fondo rojo.

  • Otra forma más de obtener la misma funcionalidad es con la función Choose. La función Choose utiliza el primer parámetro como un índice en uno de los parámetros de función restantes. El primer parámetro debe ser un entero. Si el color de fondo de un cuadro de texto de una tabla se establece en esta expresión, el valor de MyIndex controla el color.

    =Choose(Fields!MyIndex.Value,"Red","Green","Yellow")
    

    Por ejemplo, cuando MyIndex es 1, el color de fondo es "Red". En el conjunto de resultados de la consulta, compruebe que los datos de MyIndex no superan el intervalo de la lista de parámetros.

  • Comprueba el valor del campo ImportantDate y devuelve "Red" si es superior a una semana o "Blue" en los demás casos. Esta expresión puede utilizarse 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")
    
  • Comprueba el valor del campo PhoneNumber y devuelve "No value" si es un valor null (Nothing en Visual Basic); en caso contrario, devuelve el valor del número de teléfono. Esta expresión puede utilizarse 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)
    
  • Comprueba el valor del campo Department y devuelve un nombre de subinforme o un valor null (Nothing en Visual Basic). Esta expresión puede utilizarse con subinformes de obtención de detalles condicionales.

    =IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)
    
  • Comprueba si el valor de un campo es NULL. Esta expresión se puede usar para controlar la propiedad Hidden de un elemento de informe de imagen. En el ejemplo siguiente, la imagen especificada por el campo [LargePhoto] solamente se muestra si el valor del campo es distinto de NULL.

    =IIF(IsNothing(Fields!LargePhoto.Value),True,False)
    

Funciones de informe

Reporting Services proporciona funciones de informe adicionales que permiten manipular los datos de un informe. En esta sección, se ofrecen ejemplos de dos de estas funciones. Para obtener más información acerca de las funciones de informe y ejemplos, vea Usar las funciones de informe y de agregado integradas en expresiones (Reporting Services).

Sum

  • La función Sum puede calcular el total de los valores de un grupo o de 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 función Sum para calcular agregados condicionales. Por ejemplo, si un conjunto de datos tiene un campo denominado State cuyos valores posibles son Not Started, Started y Finished, la expresión siguiente, situada en un encabezado de grupo, calcula la suma de agregados solamente para el valor Finished:

    =Sum(IIF(Fields!State.Value = "Finished", 1, 0))
    

RowNumber

  • La función RowNumber, cuando se utiliza en un cuadro de texto de una región de datos, muestra el número de fila de cada instancia del cuadro de texto en 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 más adelante en este tema.

    El ámbito que especifique para RowNumber controlará cuándo comienza la nueva numeración. La palabra clave Nothing indica que la función empezará a contar desde 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 en un grupo, utilice el nombre del grupo.

    =RowNumber(Nothing)
    

Apariencia de los 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

Cuando se diseña un informe, existe la posibilidad de mostrar el nombre del informe y el número de página en el pie del informe. Para ello, se utilizan 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. Para aplicar formato a la hora, se ha usado la cadena de formato de .NET Framework para fechas cortas:

    =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 da por hecho que existe una región de datos que contiene un cuadro de texto denominado LastName.

  • La siguiente expresión, situada en un cuadro de texto a la izquierda del encabezado de página, proporciona el primer valor del cuadro de texto LastName en la página:

    =First(ReportItems("LastName").Value)
    
  • La expresión siguiente, situada en un cuadro de texto a la derecha del encabezado de página, proporciona el último valor del cuadro de texto LastName 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 existe una región de datos que contiene un cuadro de texto denominado Cost.

  • La siguiente expresión, situada en el encabezado o pie de página, proporciona la suma de los valores del cuadro de texto Cost para la página:

    =Sum(ReportItems("Cost").Value)
    

[!NOTA]

Sólo se puede hacer 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

Es posible que en algunos informes se desee insertar un salto de página al final de un número de filas determinado, en lugar de (o además de) en los grupos o elementos de informe. Para ello, cree un grupo que contenga los grupos o registros de detalle 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 concreto 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, el resultado de la expresión es un salto de página cada 25 filas.

    =CInt(Ceiling(RowNumber(Nothing)/25))
    

    Para permitir al usuario establecer 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 dicho parámetro, tal y como se muestra en la expresión siguiente:

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

    Para obtener más información acerca de cómo establecer saltos de página para un grupo, vea Cómo agregar un salto de página (Reporting Services).

Propiedades

Las expresiones no se utilizan únicamente 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 expresión siguiente, cuando se utiliza en la propiedad Color de un cuadro de texto, cambia el color del texto en función del valor del campo Profit:

    =Iif(Fields!Profit.Value < 0, "Red", "Black")
    
  • La siguiente expresión, cuando se utiliza en la propiedad BackgroundColor de un elemento de informe en una región de datos, alterna el color de fondo de cada fila entre verde claro y blanco:

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

    Si se utiliza una expresión para un ámbito determinado, puede que sea necesario indicar el conjunto de datos para la función de agregado:

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

[!NOTA]

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

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 utiliza para la visibilidad inicial de las filas de detalles de un grupo, muestra las filas de detalles de todas las ventas que superen el 90 por ciento en el campo PctQuota:

    =Iif(Fields!PctQuota.Value>.9, False, True)
    
  • La expresión siguiente, cuando se establece en la propiedad Hidden para una tabla, muestra la tabla solamente si tiene más de 12 filas:

    =IIF(CountRows()>12,true,false)
    

Direcciones URL

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

  • La expresión siguiente, cuando se utiliza como acción en un cuadro de texto, genera una dirección URL personalizada que especifica el campo EmployeeID del conjunto de datos como un parámetro de URL.

    ="http://adventure-works/MyInfo?ID=" & Fields!EmployeeID.Value
    

    Para obtener más información, vea Cómo agregar un hipervínculo a una dirección URL (Reporting Services).

  • 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 permite a un usuario decidir si deben incluirse direcciones URL activas en un informe. Esta expresión se establece como una acción en un cuadro de texto. Si establece el parámetro en FALSE y, a continuación, ve el informe, puede exportar el informe a Microsoft Excel sin hipervínculos.

    =IIF(Parameters!IncludeURLs.Value,"http://adventure-works.com/productcatalog",Nothing)
    

Datos de informe

Se pueden utilizar 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 se puede modificar la consulta que se usa para recuperar datos para el 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 otras áreas del informe, use la colección global Parameters. 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 se ejecuta el informe en el servidor de informes, el parámetro no se muestra en la barra de herramientas y el lector del informe 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
    

    Para obtener más información, vea Establecer las propiedades de los parámetros de un informe publicado.

Código personalizado

En un informe, se puede utilizar código personalizado. El código personalizado se puede incrustar en el informe o se puede almacenar en un ensamblado personalizado que se utilice en el informe. Para obtener más información acerca del código personalizado, vea Usar referencias de código personalizado en expresiones (Reporting Services).

  • En el ejemplo siguiente se llama a un método de código incrustado denominado ToUSD, que convierte el valor del campo StandardCost en un valor de moneda:

    =Code.ToUSD(Fields!StandardCost.Value)
    
  • En el ejemplo siguiente se muestra cómo definir algunas constantes y variables personalizadas.

    [Visual Basic]

    Public Const MyNote = "Authored by Bob"
    Public Const NCopies As Int32 = 2
    Public Dim  MyVersion As String = "123.456"
    Public Dim MyDoubleVersion As Double = 123.456
    

    Aunque las constantes y variables personalizadas no aparecen en la vista Constantes del Editor de expresiones (que solamente muestra las constantes integradas), pueden agregarse referencias a ellas desde cualquier expresión, tal y como se muestra en los ejemplos siguientes. Se tratan como variantes.

    [Visual Basic]

    =Code.MyNote
    =Code.NCopies 
    =Code.MyVersion
    =Code.MyDoubleVersion
    

Otra forma de crear constantes personalizadas o de personalizar un valor para una expresión es utilizar una variable de informe o una variable de grupo.

Usar variables de grupo para agregados personalizados

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, vea Usar variables de grupo en Reporting Services 2008 para agregados personalizados (en inglés).

Para obtener más información acerca de las variables, vea Usar referencias a las colecciones de variables de informe y de grupo en expresiones (Reporting Services).

Reemplazar texto de un campo en tiempo de ejecución

En el ejemplo siguiente se llama a un método incrustado denominado FixSpelling, que sustituye todas las repeticiones del texto "Bike" por el texto "Bicycle" en SubCategory.Value.

=Code.FixSpelling(Fields!SubCategory.Value)

Cuando el código siguiente se incrusta en una definición de informe, muestra una implementación del método FixSpelling. En este ejemplo se muestra cómo hacer referencia a la clase System.Text..::..StringBuilder de .NET Framework. Para obtener más información, vea Cómo agregar código a un informe (Reporting Services) y Cómo agregar una referencia de ensamblado a un informe (Reporting Services).

Public Function FixSpelling(ByVal s As String) As String
   Dim strBuilder As New System.Text.StringBuilder(s)
   If s.Contains("Bike") Then
      strBuilder.Replace("Bike", "Bicycle")
      Return strBuilder.ToString()
      Else : Return s
   End If
End Function

Suprimir valores NULL o valores 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 provocar errores en tiempo de ejecución que hacen que en el cuadro de texto se muestre #Error en lugar de la expresión evaluada. La función IIF es especialmente sensible a este comportamiento porque, a diferencia de lo que ocurre en una instrucción If-Then-Else, se evalúa cada una de las partes de la sentencia IIF (incluidas las llamadas a función) antes de que pasen a la rutina que comprueba si es true o false. La instrucción =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) genera #Error en el informe representado si el valor de Fields!Sales.Value es NOTHING.

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 un valor no definido; en caso 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 puede usarse para calcular la diferencia entre dos valores consecutivos cualesquiera, y controla el caso extremo de la primera comparación (cuando no hay ningún valor anterior) y los casos en los que 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 se llama a este código personalizado desde un cuadro de texto:

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

Historial de cambios

Contenido actualizado

Se han agregado ejemplos para la función Choose y para calcular agregados personalizados utilizando variables de grupo con código personalizado.