Pregunta

Estoy escribiendo informes en SQL Server Reporting Server que tienen un número de horas agrupadas por, digamos, el usuario y un total calculado en base a la suma de los valores.

En la actualidad mi consulta se ejecuta un procedimiento almacenado que devuelve el horas como en el formato hh: mm, en lugar de horas decimales, ya que nuestros usuarios encuentran que más intuitivo. El problema se produce cuando intento y sumar la columna utilizando una expresión SSRS, debido a que la función SUMA no es lo suficientemente inteligente como para manejar la suma de los tiempos en este formato.

¿Hay alguna manera de:

  1. Mostrar un intervalo de tiempo (en minutos o horas) en HH:? Formato MM mientras que se calcula en forma decimal
  2. O se separó y calcular el total de la HH: MM valores de texto para llegar a un total como una expresión
  3. ?

Me gustaría evitar tener que escribir / ejecutar una segunda consulta sólo para obtener el total.

¿Fue útil?

Solución

Responder a mi propia # 1:

  1. Haga su consulta devuelve un número de minutos (denotado por TimeSpent abajo).
  2. Establecer el formato de su cuadro de texto a "General" si no está ya
  3. Usar la siguiente expresión como el valor: =FLOOR(Fields!TimeSpent.Value / 60) & ":" & RIGHT("0" & (Fields!TimeSpent.Value MOD 60), 2)
  4. En el cuadro de texto resumen, utilizar la siguiente expresión: =FLOOR(Sum(Fields!TimeSpent.Value) / 60) & ":" & RIGHT("0" & (Sum(Fields!TimeSpent.Value) MOD 60), 2)

Otros consejos

También trate de poner esta función en el código personalizado de su informe.

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

Mis SP generalmente regresar el tiempo en segundos y esto me evita tener que pensar mucho si tengo que volver HH: MM: SS en más de un lugar. Además, puede hacer todas sus agregaciones normalmente y envolverlos en esto para conseguir un formato bastante.

No se puede tomar el crédito para esto, ya que sé me encontré con él en la web hace algún tiempo, pero no puedo recordar dónde.

Así que en su caso sus minutos por lo que necesita para convertirlo en segundos, se puede tratar mediante el siguiente código:

= Formato (AgregFecha ( "s", (Parámetros ReportParameter1.Value * 60), "00:00:00"), "hh: mm: ss"!)

Espero que esto ayude

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top