Usar parámetros de uno y varios valores

Actualizado: 12 de diciembre de 2006

Los parámetros pueden tener uno o varios valores. Los parámetros de varios valores se pueden establecer en más de un valor. Cuando se define una lista de valores disponibles para un parámetro de varios valores, Reporting Services proporciona automáticamente una opción Seleccionar todo en la lista desplegable de la barra de herramientas del informe. Puede utilizar esta opción para seleccionar y eliminar la selección de todos los valores de la lista.

[!NOTA] La opción Seleccionar todo se deshabilitó para el Service Pack 1 de SQL Server 2005, pero se ha restaurado en el Service Pack 2 de SQL Server 2005.

Para establecer la propiedad multivalor para un parámetro, seleccione la opción Multivalor del cuadro de diálogo Parámetros del informe. Es posible establecer en multivalor cualquier tipo de parámetro, excepto los booleanos.

El uso principal de los parámetros de varios valores es permitir que una cláusula de restricción de consulta, por ejemplo la cláusula WHERE de Transact-SQL o la cláusula Filter de MDX, pruebe la inclusión en un conjunto de valores en lugar de la igualdad para un solo valor. Para obtener más información acerca de la creación de parámetros de varios valores, vea Tutorial: Agregar parámetros a un informe tabular básico y Crear parámetros de informe y establecer sus propiedades.

Aa337292.security(es-es,SQL.90).gifNota de seguridad:
En cualquier informe que incluya un parámetro de tipo String, asegúrese de utilizar una lista de valores disponibles (también conocida como lista de valores válidos) y de que los usuarios que ejecutan el informe sólo dispongan de los permisos necesarios para ver los datos del mismo. Cuando se define un parámetro de tipo String, el usuario ve un cuadro de texto que admite cualquier valor. Una lista de valores disponibles limita los valores que se pueden especificar. Si el parámetro de informe está asociado a un parámetro de consulta y no se utiliza una lista de valores disponibles, un usuario del informe podría escribir sintaxis SQL en el cuadro de texto y exponer el informe y el servidor a un ataque por inyección de código SQL. Si el usuario tiene permisos suficientes para ejecutar la nueva instrucción SQL, podría provocar resultados no deseados en el servidor. Si un parámetro de informe no está asociado a un parámetro de consulta y los valores del parámetro están incluidos en el informe, un usuario del mismo podría escribir sintaxis de expresiones o una dirección URL en el valor del parámetro y representar el informe en Excel o HTML. Si, después, otro usuario viera el informe e hiciera clic en el contenido del parámetro representado, existe la posibilidad de que ejecutara inconscientemente la secuencia de comandos o el vínculo malintencionados. Para mitigar el riesgo de ejecutar secuencias de comandos malintencionadas por accidente, sólo deben abrirse aquellos informes representados que procedan de fuentes de confianza. Para obtener más información acerca de la protección de los informes, vea Proteger informes y recursos.

Escribir consultas que se asignan a parámetros de informe de varios valores

Puede definir un parámetro de varios valores para cualquier parámetro de informe que cree. No obstante, si desea devolver varios valores del parámetro a una consulta, debe cumplir los siguientes requisitos:

  • El origen de datos debe ser SQL Server, Oracle o Analysis Services.
  • El origen de datos no puede ser un procedimiento almacenado. Reporting Services no admite la transferencia de una matriz de parámetros de varios valores a un procedimiento almacenado.
  • La consulta debe utilizar una cláusula IN para especificar el parámetro.

El siguiente ejemplo muestra el uso de una palabra clave IN en la cláusula WHERE de una instrucción Transact-SQL. Para obtener más información acerca de la palabra clave IN o los resultados devueltos por esta consulta, vea IN (Transact-SQL).

SELECT FirstName, LastName, e.Title
FROM HumanResources.Employee AS e
    JOIN Person.Contact AS c 
    ON e.ContactID = c.ContactID
WHERE e.Title IN (@Title)

Para experimentar con esta consulta en un informe, defina un conjunto de datos mediante ella. Cambie las propiedades del parámetro de informe Title creado automáticamente del modo siguiente:

  • Seleccione la opción Multivalor.
  • En Valores disponibles, seleccione la opción No consultado. Especifique la lista siguiente en la columna Valor (deje la columna Etiqueta en blanco): Design Engineer, Buyer, Marketing Assistant.
  • En Valores predeterminados, escriba Buyer.
  • Ejecute la vista previa. Seleccione distintas combinaciones de valores para Title y compruebe que se obtienen los resultados esperados.

[!NOTA] El servidor de informes vuelve a escribir las consultas para los orígenes de datos que no pueden procesar los parámetros como una matriz. La reescritura de la consulta es necesaria para generar el resultado deseado. La reescritura de una consulta se desencadena cuando un parámetro se define como parámetro de varios valores y la consulta utiliza una instrucción IN para especificar el parámetro. Si crea una consulta que no incluye la instrucción IN, tenga en cuenta que está omitiendo la lógica que el servidor de informes proporciona para la compatibilidad con los parámetros de varios valores.

Las expresiones de filtro para conjuntos de datos, agrupación de datos y regiones de datos se definen en la ficha Filtro de las páginas de propiedades correspondientes. Si ha definido una expresión de filtro que hace referencia a un parámetro de varios valores, debe utilizar el operador IN en la expresión de filtro. Las expresiones de filtro que utilizan operadores distintos a IN provocan errores de procesamiento. Para obtener más información, vea Cómo agregar un filtro (Diseñador de informes).

Escribir expresiones que hacen referencia a parámetros de varios valores

Cuando se hace referencia a un parámetro de una expresión, se utiliza la colección global Parameters. Cuando utilice parámetros de varios valores en expresiones, debe comprender tanto el tratamiento de un solo valor como de toda la matriz de valores. En la tabla siguiente se incluyen ejemplos y descripciones de propiedades de parámetros que tienen seleccionada la opción Multivalor.

Ejemplo Descripción

Parameters!<ParameterName>.Value

Matriz de valores de datos Variant del parámetro.

Parameters!<ParameterName>.Label

Matriz de cadenas que son etiquetas del parámetro.

Parameters!<ParameterName>.IsMultiValue

Propiedad booleana que indica si se ha seleccionado la opción Multivalor del parámetro.

Parameters!<ParameterName>.Count

Número de valores de la matriz.

Parameters!<ParameterName>.Value(0)

Primer valor de una matriz de varios valores.

Parameters!<ParameterName>.Label(0)

Primera etiqueta de una matriz de varios valores.

Parameters!<ParameterName>.Value(Parameters! <ParameterName>.Count-1)

Último valor de una matriz de varios valores.

Parameters!<ParameterName>.Label(Parameters! <ParameterName>.Count-1)

Última etiqueta de una matriz de varios valores.

=Join(Parameters!<ParameterName>.Value,", ")

Expresión que concatena todos los valores de la matriz de un parámetro de varios valores del tipo String en una cadena.

=Split("Value1, Value2, Value3",",")

Selecciona una cadena y crea una matriz de objetos que se puede utilizar para pasar a un informe integrado o de obtención de detalles que espera un parámetro de varios valores.

Puede utilizar las funciones SPLIT y JOIN para separar o combinar valores en la matriz de cualquier expresión. Puede utilizar las funciones STRING y CINT para convertir los valores en cadenas o enteros.

Para obtener más información y ejemplos de parámetros de uno y varios valores en expresiones, vea Usar parámetros en expresiones.

Historial de cambios

Versión Historial

12 de diciembre de 2006

Contenido modificado:
  • Se ha restaurado la opción Seleccionar todo para el SP2.

Vea también

Tareas

Cómo agregar, editar o eliminar un parámetro de informe (Diseñador de informes)

Conceptos

Establecer las propiedades de los parámetros de un informe publicado
Usar parámetros en expresiones
Usar parámetros en expresiones

Otros recursos

Tutorial: Agregar parámetros a un informe tabular básico
Tutorial: Características avanzadas mediante el uso de parámetros
Parámetros del informe (Diseñador de informes)

Ayuda e información

Obtener ayuda sobre SQL Server 2005