Compartir a través de


Referencias a la colección de campos de conjunto de datos en un informe paginado (Generador de informes)

Se aplica a: Generador de informes de Microsoft (SSRS) Power BI Report Builder Diseñador de informes en SQL Server Data Tools

Cada conjunto de datos de un informe paginado contiene una colección de Campos. La colección Campos es el conjunto de campos especificados por la consulta de conjunto de datos, más los campos calculados adicionales que se hayan creado. Una vez creado el conjunto de datos, la colección de campos aparece en el panel Datos de informe .

Una referencia de campo sencilla en una expresión se muestra en la superficie de diseño como una expresión simple. Por ejemplo, al arrastrar el campo Sales desde el panel Datos de informe hasta una celda de tabla en la superficie de diseño, se muestra [Sales] . Este valor representa la expresión subyacente =Fields!Sales.Value que se establece en la propiedad Valor del cuadro de texto. Cuando se ejecuta el informe, el procesador de informes evalúa esta expresión y muestra los datos reales del origen de datos en el cuadro de texto de la celda de tabla. Para más información, consulte Expresiones (Generador de informes) y Colección Campos del conjunto de datos (Generador de informes).

Nota:

Puede crear y modificar los archivos de definición de informes paginados (.rdl) en el Generador de informes de Microsoft, en Power BI Report Builder y en el Diseñador de informes de SQL Server Data Tools.

Mostrar la colección de campos para un conjunto de datos

Para mostrar los valores individuales de una colección de campos, arrastre cada campo hasta una fila de detalles de tabla y ejecute el informe. Las referencias desde la fila de detalles de una tabla o región de datos de lista muestran un valor para cada fila del conjunto de datos.

Si desea mostrar los valores resumidos de un campo, arrastre cada campo numérico hasta el área de datos de una matriz. La función de agregado predeterminada para la fila de totales es Sum; por ejemplo, =Sum(Fields!Sales.Value). Puede cambiar la función predeterminada para calcular totales diferentes. Para obtener más información, consulte Referencia de funciones de agregado (Generador de informes).

Para mostrar los valores resumidos de una colección de campos en un cuadro de texto directamente en la superficie de diseño que no sea parte de una región de datos, debe especificar el nombre del conjunto de datos como ámbito para la función de agregado. Por ejemplo, para un conjunto de datos denominado SalesData, la expresión siguiente especifica el total de todos los valores para el campo Sales: =Sum(Fields!Sales,"SalesData").

Al usar el cuadro de diálogo Expresión para definir una referencia de campo, puede seleccionar la colección Campos en el panel Categoría y ver la lista de campos disponibles en el panel Campo. Cada campo tiene varias propiedades, entre las que se incluyen Valor y IsMissing. Las demás son propiedades de campo extendidas predefinidas que pueden estar disponibles para el conjunto de datos dependiendo del tipo de origen de datos.

Detectar valores NULL en un campo de conjunto de datos

Para detectar un valor de campo NULL (Nothing en Visual Basic), puede usar la función IsNothing. Cuando se coloca en un cuadro de texto de una fila de detalles de tabla, la expresión siguiente comprueba el valor del campo MiddleName y lo sustituye por el texto "No Middle Name" cuando dicho valor es NULL, y por el propio valor de campo en caso contrario:

=IIF(IsNothing(Fields!MiddleName.Value),"No Middle Name",Fields!MiddleName.Value)

Detectar campos inexistentes en las consultas dinámicas en tiempo de ejecución

De manera predeterminada, los elementos de la colección Fields tienen dos propiedades: Value y IsMissing. La propiedad IsMissing indica si un campo que se ha definido para un conjunto de datos en tiempo de diseño se encuentra entre los campos recuperados en tiempo de ejecución. Por ejemplo, la consulta podría llamar a un procedimiento almacenado en el que el conjunto de resultados varía con un parámetro de entrada o podría ser SELECT * FROM <table>, donde ha cambiado la definición de tabla.

Nota:

IsMissing detecta cambios en el esquema de conjunto de datos entre el tiempo de diseño y el de ejecución para cualquier tipo de origen de datos. IsMissing no se puede usar para detectar miembros vacíos en un cubo multidimensional, y no está relacionada con los conceptos EMPTY y NON EMPTYdel lenguaje de consulta MDX.

Puede probar la propiedad IsMissing en código personalizado para determinar si un campo se encuentra en el conjunto de resultados. No puede comprobar su presencia usando una expresión con una llamada a una función de Visual Basic, como IIF o SWITCH, porque Visual Basic evalúa todos los parámetros en la llamada a la función, lo que produce un error cuando se evalúa la referencia al campo que falta.

Ejemplo de control de la visibilidad de una columna dinámica para un campo que no existe

Para establecer una expresión que controle la visibilidad de una columna que muestra un campo de un conjunto de datos, primero debe definir una función de código personalizada. Esta función debería devolver un valor booleano. El valor se basa en si falta el campo. Por ejemplo, la función de código personalizada siguiente devuelve true si el campo no existe y false en caso contrario.

Public Function IsFieldMissing(field as Field) as Boolean  
 If (field.IsMissing) Then  
 Return True  
  Else   
  Return False  
 End If  
End Function  

Si quiere usar esta función para controlar la visibilidad de una columna, establezca la propiedad Hidden de la columna en la expresión siguiente:

=Code.IsFieldMissing(Fields!FieldName)

La columna se oculta si el campo no existe.

Ejemplo de control del valor del cuadro de texto para un campo que no existe

Para sustituir texto en lugar del valor de un campo que falta, debe escribir código personalizado. Este código debe devolver el texto que puede utilizar como reemplazo cuando falta el campo. Por ejemplo, la función de código personalizada siguiente devuelve el valor del campo si el campo existe. Además, el código devuelve el mensaje que especifique como segundo parámetro si el campo no existe:

Public Function IsFieldMissingThenString(field as Field, strMessage as String) as String  
 If (field.IsMissing) Then  
  Return strMessage  
 Else   
  Return field.Value  
  End If  
End Function  

Para usar esta función en un cuadro de texto, agregue la expresión siguiente a la propiedad Value:

=Code.IsFieldMissingThenString(Fields!FieldName,"Missing")

El cuadro de texto muestra el valor de campo o el texto especificado.

Uso de propiedades de campo extendidas

Las propiedades de campo extendidas son otras propiedades definidas en un campo por la extensión de procesamiento de datos. El tipo de origen de datos determina el conjunto de datos. Las propiedades de campo extendidas pueden ser predefinidas o específicas de un tipo de origen de datos. Para más información, consulte Propiedades de campo extendidas para una base de datos de Analysis Services (SSRS).

Si especifica una propiedad no admitida para ese campo, la expresión se evalúa como null (Nothing en Visual Basic). Si un proveedor de datos no admite propiedades de campo extendidas o si no se encuentra el campo al ejecutar la consulta, el valor de la propiedad será null (Nothing en Visual Basic) para las propiedades de tipo String y Object, y cero (0) para las propiedades de tipo Integer. Una extensión de procesamiento de datos puede sacar partido de las propiedades predefinidas optimizando consultas que incluyan esta sintaxis.