2008-10-01 16 views
5

Me preguntaba si es posible no adjuntar hojas de Excel si está vacío, y tal vez escribir un comentario diferente en el correo electrónico si está vacío.SQL Server Reporting Services 2005 - Cómo manejar informes vacíos

Cuando voy a informar las opciones de entrega, no hay tal configuración.

Editar: Estoy corriendo SQL Server Reporting Services 2005.

Algunas soluciones posibles como se menciona a continuación:

MSDN: Reporting Services Extensions

NoRows and NoRowsMessage properties

que debería buscar en estas cosas.

Respuesta

1

Creo que la respuesta es no, al menos no de fábrica. No debería ser difícil escribir su propia extensión de entrega dada la muestra de extensión de entrega de impresión incluida en RS.

+0

Gracias por mencionar la extensión. –

1

Sí, no creo que eso sea posible. Puede usar la propiedad "NoRows" de su tabla para mostrar un mensaje cuando no se devuelven datos, pero eso no evitará que se adjunte el informe. Pero al menos cuando abrieron el archivo Excel, podría imprimir su mensaje personalizado en lugar de un documento vacío.

+0

Gracias por informarme sobre la propiedad "NoRows". –

0

he tenido éxito con el uso de una suscripción controlada por datos y una tabla que contiene mis suscriptores, con la consulta suscripción controlada por datos con este aspecto:

SELECT * FROM REPORT_SUBSCRIBERS WHERE EXISTS (SELECT QUERY_FROM_YOUR_REPORT) 

En la configuración de entrega, el destinatario es el de datos columna que contiene mis direcciones de correo electrónico.
Si la consulta interna no devuelve filas, no se enviarán correos electrónicos.


Para su aplicación, puede aprovechar la configuración de entrega "Incluir informe" y "Comentario".
me imagino que una consulta suscripción controlada por datos como esto funcionará para usted:

SELECT '[email protected]; [email protected]' AS RECIPIENTS, 
CASE WHEN EXISTS (REPORT_QUERY) THEN 'TRUE' ELSE 'FALSE' END AS INCLUDE_REPORT, 
CASE WHEN EXISTS (REPORT_QUERY) THEN 'The report is attached' ELSE 'There was no data in this report' END AS COMMENT 

luego usar esas columnas en los campos correspondientes al configurar los ajustes de entrega de la suscripción.

1

encontrado otra cosa esto en alguna parte ...

tengo una solución limpia a este problema, el único inconveniente es que un administrador del sistema debe crear y mantener el calendario. Pruebe estos pasos:

  1. Cree una suscripción para el informe con todos los destinatarios necesarios.

  2. Configure la suscripción para que se ejecute semanalmente en el día de ayer (es decir, si hoy es martes, seleccione Lunes) con la programación comenzando en la fecha actual y deteniéndose en la fecha actual. Esencialmente, este cronograma nunca se ejecutará.

  3. Abra el trabajo recién creado en SQL Management Studio, vaya a los pasos y copie la línea de SQL (se verá más o menos así: EXEC ReportServer.dbo.AddEvent @ EventType = 'TimedSubscription', @ EventData = '1c2d9808-aa22-4597-6191-f152d7503fff')

  4. Crear su propio puesto de trabajo en SQL con el horario actual y usar algo como:

SI EXISTE (SELECCIONAR sus criterios de prueba ...)

COMENZAR

EXEC ReportServer.dbo.AddEvent @EventType = ... etc.

FIN

Cuestiones relacionadas