Frage

ich Berichte über SQL Server Reporting Server zu schreiben, die eine Anzahl von Stunden haben gruppiert nach, sagen wir, den Benutzer und insgesamt berechnet auf der Basis der Summe der Werte.

Zur Zeit meine Abfrage führt eine gespeicherte Prozedur, dass kehrt die Stunden wie in HH: MM-Format, anstatt Dezimalstunden, wie unsere Nutzer finden, dass intuitiver. Das Problem tritt auf, wenn ich versuche, und die Säule mit einem SSRS Ausdruck addiere, da die Summe-Funktion nicht intelligent genug, um mal in diesem Format zu handhaben addiert.

Gibt es eine Möglichkeit an:

  1. ein Zeitintervall-Anzeige (in Minuten oder Stunden) in HH: MM-Format, während es in Dezimalform berechnet mit
  2. Or aufgeteilt und berechnet die Summe der HH: MM Textwerte an insgesamt als Ausdruck ankommt
  3. ?

Ich möchte schreiben vermeiden, / eine zweite Abfrage starten Sie einfach die Gesamtsumme.

War es hilfreich?

Lösung

Die Beantwortung meiner eigene # 1:

  1. Machen Sie Ihre Abfrage mehrere Minuten zurückzukehren (durch TimeSpent unten).
  2. Stellen Sie das Format Ihrer Textbox „Allgemein“, wenn es nicht bereits ist
  3. Verwenden Sie den folgenden Ausdruck als Wert: =FLOOR(Fields!TimeSpent.Value / 60) & ":" & RIGHT("0" & (Fields!TimeSpent.Value MOD 60), 2)
  4. Für die Summe Textbox, verwenden Sie den folgenden Ausdruck: =FLOOR(Sum(Fields!TimeSpent.Value) / 60) & ":" & RIGHT("0" & (Sum(Fields!TimeSpent.Value) MOD 60), 2)

Andere Tipps

Sie können diese Funktion auch versuchen, setzen in benutzerdefinierten Code Ihres Berichts.

Function secondsToString(seconds As int64) As String
Dim myTS As New TimeSpan(seconds * 10000000)
Return String.Format("{0:00}:{1:00}:{2:00}",myTS.Hours, myTS.Minutes, myTS.Seconds)
End Function

Meine SPs im Allgemeinen die Zeit in Sekunden zurückkehren und dies hält mich davon ab, die zu schwer zu denken, wenn ich zurück HH: MM: SS in mehr als einem Ort. Darüber hinaus können Sie alle Ihre Aggregationen tun normalerweise und wickeln Sie sie in das ein ziemlich Format zu erhalten.

Ich kann Kredit für diese nehmen, wie ich weiß, dass ich über es auf dem Netz vor einiger Zeit gestolpert, aber ich kann mich nicht erinnern, wo.

So in Ihrem Fall sein Protokoll so müssen Sie es auf Sekunden konvertieren, können Sie unter Code versuchen Sie es mit:

= Format (DateAdd ( "s" (Parameter ReportParameter1.Value * 60), "00:00:00"), "HH: mm: ss"!)

Hope, das hilft

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top