Domanda

Sto scrivendo rapporti su SQL Server Reporting Server che hanno un numero di ore raggruppati per esempio, l'utente, e un totale calcolato in base alla somma dei valori.

Al momento la mia query viene eseguita una stored procedure che restituisce le ore come in HH: MM, anziché in ore decimali, come i nostri utenti a trovare più intuitivo. Il problema si verifica quando provo e aggiungi la colonna utilizzando un'espressione SSRS, perché la funzione SUM non è abbastanza intelligente per gestire sommando i tempi in questo formato.

C'è un modo per:

  1. Visualizzazione di un intervallo di tempo (in minuti o ore) in HH: MM formato pur avendo calcolato in forma decimale
  2. o dividere e calcolare il totale del HH: MM valori di testo per arrivare a un totale come espressione
  3. ?

Vorrei evitare di dover scrivere / eseguire una seconda query solo per ottenere il totale.

È stato utile?

Soluzione

Risposta mia # 1:

  1. Fai la tua interrogazione restituisca un numero di minuti (indicato con TimeSpent sotto).
  2. Imposta il formato della vostra casella di testo a "Generale", se non è già
  3. Utilizza la seguente espressione come valore: =FLOOR(Fields!TimeSpent.Value / 60) & ":" & RIGHT("0" & (Fields!TimeSpent.Value MOD 60), 2)
  4. Per la casella di testo somma, utilizzare la seguente espressione: =FLOOR(Sum(Fields!TimeSpent.Value) / 60) & ":" & RIGHT("0" & (Sum(Fields!TimeSpent.Value) MOD 60), 2)

Altri suggerimenti

Si può anche provare a mettere questa funzione in codice personalizzato del vostro rapporto.

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

I miei SP generalmente tornare il tempo in secondi e questo mi impedisce di dover pensare troppo duro, se devo tornare HH: MM: SS in più di un posto. Inoltre, è possibile fare tutte le aggregazioni normalmente e avvolgerli in questo per ottenere un bel formato.

Non può prendersi il merito di questo come so mi sono imbattuto sul web qualche tempo fa, ma non riesco a ricordare dove.

Quindi nel tuo caso verbale quindi è necessario convertirlo in pochi secondi, si può provare a utilizzare il codice qui sotto:

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

Spero che questo aiuti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top