services reporte procedimiento parametros parametro multivalor fecha entrada ejecutar dinamicos con cascada almacenado agregar stored-procedures reporting-services hide subreport

stored procedures - reporte - Ocultar el informe secundario en SSRS basado en el parámetro(y no ejecutar el procedimiento almacenado)



parametros en report builder (3)

Los elementos de informe ocultos en SSRS aún se procesan: la propiedad oculta simplemente determina si se muestran en el resultado.

Una forma de garantizar que el procedimiento solo se ejecute de forma condicional sería cambiar el nombre del procedimiento almacenado en el conjunto de datos por una expresión, como por ejemplo:

=iif(Parameters!RunMyDataset.Value="Y","sp_MyDataSet","sp_Dummy")

- donde sp_Dummy es un procedimiento almacenado que realiza un procesamiento mínimo (por ejemplo, SELECT NULL ).

Tengo un problema en el que deseo ocultar / mostrar un subinforme basado en un parámetro que se pasa al informe principal.

Puedo establecer la propiedad oculta usando una expresión que ocultará / mostrará el subinforme, pero lo que encontré usando el Analizador de SQL, es que el procedimiento almacenado del subinforme se sigue ejecutando, incluso si el subinforme está oculto.

¿Alguien sabe de una manera de evitar esto, que no sea cambiar el procedimiento almacenado en sí mismo? Si no, ¿alguien sabe el motivo por el cual se ejecuta el procedimiento almacenado, aunque el subinforme esté oculto?


  1. Haga clic derecho en el objeto de informe secundario en el informe principal y seleccione "Formato de subinforme ...". Esto abrirá el Editor de Formato.

  2. Seleccione la pestaña "Subinforme" en el Editor de Formato.

  3. coloque una marca de verificación en la casilla de verificación "Suprimir subinforme en blanco".


Hay un método para resolver esto. Base en su descripción de la quesion. Por ejemplo, tiene 4 subinformes y los ha denominado página1 a página4. Y el informe principal pasará un parámetro "Investor_ID" a todas estas 4 páginas. En el informe principal, debe crear 4 parámetros booleanos y establecer la propiedad oculta del subinforme para controlar estos 4 subinformes visibles o no.

Por ejemplo, use expression =iif(Parameters!Page1.Value = true, false, true para que cuando seleccione true para el parámetro página1, se mostrará la página 1; de lo contrario, se ocultará.

Luego necesita configurar los parámetros en "Propiedades de subinforme" para los subinformes.

Para el parámetro Investor_ID, que el subinforme necesitaba, en el valor, elija expresar y usar =IIF(Parameters!Page1.Value = true, Fields!Investor_ID.Value, nothing) . Eso significa que si elige ocultar la página1, entonces mainreport no pasará nada al subinforme página1. Entonces, la página 1 no se ejecutará y mostrará "Error: no se pudo mostrar el subinforme", ya que el parámetro Investor_ID es nulo. Pero ocultamos ese informe integrado. Entonces la página 1 no aparecerá.

De esta forma, puede controlar el subinforme oculto ejecutarse o no.