lundi 18 mars 2013

[SSRS] : Temps d’exécution de rapport

Parfois, pour debugguer un rapport, on peut avoir besoin d'afficher le temps global d’exécution du rapport en pied de page ou à l’intérieur même du rapport, et cela sans faire appel à la vue ExecutionLog de la base ReportServer.

La solution consiste à utiliser la fonction Now() et la variable globale SSRS Global!ExecutionTime, la première permettant de récupérer l'heure d'affichage effectif du rapport et la deuxième permettant de récupérer l'heure de génération du rapport et plus exactement à partir du moment où l'on clique sur le bouton "Afficher le rapport".

Donc, en faisant la différence entre Now() et Global!ExecutionTime nous pouvons avoir le temps d’exécution global du rapport, techniquement cela se traduit de la manière suivante :

System.DateTime.Now.Subtract(Globals!ExecutionTime).TotalSeconds

Et pour faire quelque chose de plus complet, pour les rapports qui dépasserais une minute de temps d’exécution voir une heure, même si rare, voici l'expression complète :

IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).TotalSeconds < 1, "< 1 seconde(s)",

(

IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).Hours > 0, System.DateTime.Now.Subtract(Globals!ExecutionTime).Hours & " heure(s), ", "") +

IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).Minutes > 0, System.DateTime.Now.Subtract(Globals!ExecutionTime).Minutes & " minute(s), ", "") +

IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).Seconds > 0, System.DateTime.Now.Subtract(Globals!ExecutionTime).Seconds & " seconde(s)", ""))

)

Et pour tester le rapport, nous ajoutons un Dataset avec un WAITFOR DELAY '00:00:03' pour simuler un temps d’exécution de 3 secondes.
Ce qui donne le résultat suivant :


Aucun commentaire:

Enregistrer un commentaire