2008-10-01 9 views
5

Je me demandais s'il était possible de ne pas joindre une feuille Excel si elle est vide, et peut-être écrire un commentaire différent dans l'e-mail si vide.SQL Server Reporting Services 2005 - Comment gérer les rapports vides

Lorsque je vais rapporter les options de livraison, il n'y a pas de telle configuration.

Modifier: Je suis en cours d'exécution SQL Server Reporting Services 2005.

Quelques solutions de contournement possibles comme indiqué ci-dessous:

MSDN: Reporting Services Extensions

NoRows and NoRowsMessage properties

je devrais regarder dans ces choses.

Répondre

1

Je crois que la réponse est non, du moins pas prêt à l'emploi. Il ne devrait pas être difficile d'écrire votre propre extension de livraison compte tenu de l'échantillon d'extension de livraison d'impression inclus dans RS.

+0

Merci d'avoir mentionné l'extension. –

1

Oui, je ne pense pas que ce soit possible. Vous pouvez utiliser la propriété "NoRows" de votre table pour afficher un message lorsqu'aucune donnée n'est renvoyée, mais cela n'empêchera pas le rapport d'être attaché. Mais au moins, quand ils ont ouvert le fichier Excel, il pourrait imprimer votre message personnalisé au lieu d'un document vide.

+0

Merci de m'avoir informé de la propriété "NoRows". –

0

J'ai eu du succès avec l'aide d'un abonnement piloté par les données et une table contenant mes abonnés, avec la requête de souscription axée sur les données qui ressemble à ceci:

SELECT * FROM REPORT_SUBSCRIBERS WHERE EXISTS (SELECT QUERY_FROM_YOUR_REPORT) 

Dans les paramètres de livraison, le destinataire est les données colonne contenant mes adresses email.
Si la requête interne ne renvoie aucune ligne, aucun e-mail ne sera envoyé.


Pour vos besoins, vous pouvez profiter des paramètres de livraison "Inclure rapport" et "Commentaire".
j'imagine qu'une requête d'abonnement piloté par les données comme cela fonctionnera pour vous:

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 

Ensuite, utilisez ces colonnes dans les champs appropriés lors de la configuration des paramètres de livraison pour l'abonnement.

1

trouvé ce ... un autre endroit

J'ai une solution propre à ce problème, le seul inconvénient est qu'un administrateur système doit créer et maintenir le calendrier. Essayez ces étapes:

  1. Créez un abonnement pour le rapport avec tous les destinataires requis.

  2. Définissez l'abonnement à exécuter chaque semaine le jour d'hier (c'est-à-dire si aujourd'hui est mardi, sélectionnez lundi) avec le calendrier commençant à la date d'aujourd'hui et s'arrêtant à la date du jour. Essentiellement, ce calendrier ne sera jamais exécuté.

  3. Ouvrez le travail nouvellement créé dans SQL Management Studio, passez aux étapes et copiez la ligne de SQL (il ressemblera à ceci: EXEC ReportServer.dbo.AddEvent @ EventType = 'TimedSubscription', @ EventData = '1c2d9808-aa22-4597-6191-f152d7503fff')

  4. Créez votre propre emploi dans SQL avec le calendrier réel et utiliser quelque chose comme:

IF EXISTS (SELECT vos critères de test ...)

BEGIN

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

FIN

Questions connexes