2010-05-21 3 views
2

Я пишу отчеты на сервере отчетов SQL Server, у которых есть количество часов, сгруппированных, скажем, пользователем, и общая сумма, рассчитанная на основе суммы значений.Формат отчетов службы отчетов SQL Server Время работы: минуты

В настоящее время мой запрос запускает хранимую процедуру, которая возвращает часы, как в формате HH: MM, а не в десятичные часы, так как наши пользователи находят это более интуитивно понятным. Проблема возникает, когда я пытаюсь добавить столбец с помощью выражения SSRS, потому что функция SUM недостаточно умна, чтобы обрабатывать время сложения в этом формате.

Есть ли способ:

  1. Отображать временной интервал (в минутах или часах) в формате ЧЧ: ММ, а то, что вычисляется в десятичной форме?
  2. Или разделите и вычислите общее количество значений текста HH: MM, чтобы получить итоговое выражение?

Я хотел бы избежать необходимости писать/запускать второй запрос, чтобы получить общее количество.

ответ

3

Отвечая на мой собственный # 1:

  1. Сделайте ваш запрос возвращает количество минут (обозначаемое TimeSpent ниже).
  2. Установите формат вашего текстового поля в «Общие», если она еще не
  3. Используйте следующее выражение в качестве значения: =FLOOR(Fields!TimeSpent.Value/60) & ":" & RIGHT("0" & (Fields!TimeSpent.Value MOD 60), 2)
  4. Для суммы текстового поля, используйте следующее выражение: =FLOOR(Sum(Fields!TimeSpent.Value)/60) & ":" & RIGHT("0" & (Sum(Fields!TimeSpent.Value) MOD 60), 2)
2

Вы также можете попробовать поместить эту функцию в свой собственный код отчета.

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 

Моей SPs обычно возвращает время в секундах, и это удерживает меня от того, чтобы слишком сильно, если я должен вернуться HH думать: ММ: СС в более чем одном месте. Кроме того, вы можете выполнять все свои скопления и обертывать их, чтобы получить красивый формат.

Я не могу за это признаться, поскольку знаю, что некоторое время назад я наткнулся на него в Интернете, но я не могу вспомнить, где.

0

Так что в вашем случае его минут, так что вам нужно, чтобы преобразовать его в секундах, вы можете попробовать использовать ниже код:

= Format (DateAdd ("S", (Параметры ReportParameter1.Value * 60), "! 00:00:00 ")," HH: mm: ss ")

Надеюсь, что это поможет

Смежные вопросы