Share via


Usar referencias de código personalizado en expresiones (Generador de informes 2.0)

Puede agregar referencias a un código personalizado incrustado en un informe. El código incrustado se utiliza en constantes, funciones complejas o funciones personalizadas que se usan varias veces en un único informe.

Para cálculos dependientes del tiempo que se evalúan una sola vez en tiempo de ejecución y cuyo valor desea conservar a lo largo del procesamiento del informe, plantéese la posibilidad de usar una variable de informe o de grupo. Para obtener más información, vea Usar referencias a las colecciones de variables de informe y de grupo en expresiones (Generador de informes 2.0).

El código personalizado puede incluir nuevas constantes, variables, funciones o subrutinas personalizadas. Puede incluir referencias de sólo lectura en las colecciones integradas, como la colección Parameters. Sin embargo, no puede pasar conjuntos de valores de datos de informe a las funciones personalizadas; concretamente, no se admiten agregados personalizados.

Código incrustado

Para agregar código incrustado a un informe, use la página Código del cuadro de diálogo Propiedades del informe. El bloque de código que cree puede contener varios métodos. Es imprescindible que los métodos del código incrustado estén escritos en MicrosoftVisual Basic y que estén basados en instancias. El procesador de informes agrega referencias para los espacios de nombres System.Convert y System.Math automáticamente. En la versión 2.0 del Generador de informes, no se admiten referencias a referencias de ensamblado adicionales.

Los métodos del código incrustado están disponibles a través del miembro Code definido globalmente. Para tener acceso a ellos, se hace referencia al miembro Code y al nombre del método. En el siguiente ejemplo, se llama al método ToUSD, que convierte el valor del campo StandardCost en un valor de moneda:

=Code.ToUSD(Fields!StandardCost.Value)

Para hacer referencia a colecciones integradas en el código personalizado, incluya una referencia al objeto integrado Report:

=Report.Parameters!Param1.Value

En los ejemplos siguientes se muestra cómo definir algunas constantes y variables personalizadas.

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 personalizadas no aparecen en la categoría Constantes del cuadro de diálogo Expresión (que solo muestra las constantes integradas), se pueden agregar referencias a ellas desde cualquier expresión, tal y como se muestra en los ejemplos siguientes. En una expresión, una constante personalizada se trata como Variant.

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

Para obtener más información acerca de las colecciones de objetos integrados y de su inicialización, vea Usar colecciones globales en expresiones.

Ejemplos de referencias a Parameters desde código personalizado

Se puede hacer referencia a la colección global Parameters mediante código personalizado en un bloque de código de la definición de informe o en un ensamblado personalizado proporcionado por el usuario. La colección Parameters es de sólo lectura y no tiene iteradores públicos. No se puede usar una construcción For Each de Visual Basic para recorrer la colección. Debe conocer el nombre del parámetro definido en la definición de informe para poder hacer referencia a él en el código. No obstante, puede recorrer en iteración todos los valores de un parámetro de varios valores. Para obtener más información, vea Usar referencias de código personalizado en expresiones (Generador de informes 2.0).

En la tabla siguiente se incluyen ejemplos de referencias a la colección integrada Parameters desde código personalizado:

Descripción

Referencia en la expresión

Definición del código personalizado

Pasa la totalidad de la colección global Parameters al código personalizado.

Esta función devuelve el valor de un parámetro de informe determinado, MyParameter.

=Code.DisplayAParameterValue(Parameters)

Public Function DisplayAParameterValue(

ByVal parameters as Parameters) as Object

Return parameters("MyParameter").Value

End Function

Pasa un parámetro individual al código personalizado.

Este ejemplo devuelve el valor del parámetro pasado. Si se trata de un parámetro de varios valores, la cadena devuelta es una concatenación de todos ellos.

=Code.ShowParametersValues(Parameters!DayOfTheWeek)

Public Function ShowParameterValues(ByVal parameter as Parameter)
 as String
   Dim s as String 
   If parameter.IsMultiValue then
      s = "Multivalue: " 
      For i as integer = 0 to parameter.Count-1
         s = s + CStr(parameter.Value(i)) + " " 
      Next
   Else
      s = "Single value: " + CStr(parameter.Value)
   End If
   Return s
End Function

Ensamblados personalizados

En la versión 2.0 del Generador de informes, únicamente se admiten ensamblados personalizados en el servidor de informes. Para obtener más información acerca de cómo obtener acceso al código después de instalarlo en el servidor de informes, vea "Obtener acceso a los ensamblados personalizados a través de expresiones" en la documentación de Reporting Services en los Libros en pantalla de SQL Server.