SSRS: Zeigt die korrekte Ausführungszeit auf einem zwei-seitigen Bericht?

Ich Frage mich nur, wie ich zeigen kann, die die korrekte Ausführung Zeit für einen Bericht?

Bis vor kurzem hatte ich bereits die folgenden in der Fußzeile meiner Berichte als Bezeichnung der Ausdruck:

="Execution Time: " +
IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).TotalSeconds < 1, "0 seconds", 
(
IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).Hours > 0, System.DateTime.Now.Subtract(Globals!ExecutionTime).Hours & " hour(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 & " second(s)", ""))
)

Leider (wie erwartet), immer wenn ich navigieren Sie zu einer zweiten Seite einen Bericht oder ein PDF-export ist dieser Wert neu zu berechnen (also, wenn ich das Rendern des Berichts in 1s, 30s warten und dann als pdf exportieren " die Ausführungszeit anzeigen würde als 31s).

Was ist die beste Methode für die Anzeige von der Ausführung mal ein Bericht ohne die oben genannten Informationen?

Bearbeiten (beantworten, wie ich kann nicht ein post mit <100 Ruf):

Ich habe eigentlich einen anderen Ansatz, denn ich habe nicht bemerkt, alle Antworten hier bis jetzt. Vielleicht nicht so gut wie die oben genannten Antworten aber ich würde sagen, eine einfache Lösung, die umgesetzt werden könnten, wo die Fähigkeit, alternative Lösungen nicht zur Verfügung stehen:

Wie bereits erwähnt, hatte ich folgende:

="Execution Time: " +
IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).TotalSeconds < 1, "0 seconds", 
(
IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).Hours > 0, System.DateTime.Now.Subtract(Globals!ExecutionTime).Hours & " hour(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 & " second(s)", ""))
)

Das problem mit dieser kommt ins Spiel, wenn Sie haben ein zwei-seitiger Bericht oder einen Bericht exportieren in PDF. Wenn Sie einen Bericht generieren, der hat 5s Ausführungszeit und dann 30s warten, um PDF-export dann die execution time in der Fußzeile des exportierten Bericht angezeigt wird, wie 35s. Ebenfalls wenn man auf der ersten Seite einen Bericht, und warten Sie 30s navigieren Sie zur zweiten Seite. Dies ist, weil der Zeitpunkt der Ausführung berechnet, die auf jedem render (neue Seite oder PDF-export) mit System.DateTime.Nun.

Um dies zu vermeiden, die Zeit, die der Bericht generiert wird, muss in einer Variablen gespeichert (von der ich ursprünglich beabsichtigt zu speichern, wird die gesamte Zeichenfolge oben jedoch der Zeitpunkt der Ausführung nicht angezeigt werden, zu einem Bericht verfügbaren Variablen Ausdruck, wie ich bin, vorausgesetzt, Sie sind initialisiert, bevor dieses Finalisiert wurde). Um dies zu tun, zuerst zu gehen Berichts-Eigenschaften, und fügen Sie eine neue variable. Für dieses Beispiel habe ich genannt habe die variable GroupExecutionTime

Fügen Sie den folgenden Ausdruck, um die Variablen in der Reihenfolge initialisiert es mit der aktuellen system-Zeit (die execution time):

=System.DateTime.Now

Nachdem Sie dies getan haben, die wir dann brauchen, um die Fußzeile aktualisieren Beschriftung der Variablen-Wert anstelle des aktuellen system-Zeit (Berichts-Variablen werden nicht neu berechnet, auf jeder Seite neu Rendern oder exportieren, wo Sie als Fußzeile label-Ausdrücke sind).

="Execution Time: " +
IIf(Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).TotalSeconds < 1, "0 seconds", 
(
IIf(Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).Hours > 0, Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).Hours & " hour(s), ", "") +
IIf(Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).Minutes > 0, Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).Minutes & " minute(s), ", "") +
IIf(Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).Seconds > 0, Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).Seconds & " second(s)", ""))
)
InformationsquelleAutor Michael A | 2011-12-13
Schreibe einen Kommentar