2009-02-27 4 views
8

У меня есть отчет и источник данных, в котором один из столбцов имеет тип TimeSpan. Значение TimeSpan отображается правильно в отчете, когда я использую Fields!TheTime.Value, без проблем.SSRS: Суммирование значений TimeSpan в отчете

  • 07:02:00
  • 05:41:00

Но я хотел бы сделать Сумму этих значений, чтобы получить общее время группы. В C#, и я могу, конечно, сделать TimeSpan + другой TimeSpan, поэтому я знаю, что они могут быть добавлены. Я попробовал

=Sum(Fields!TheTime.Value) 

Но это заканчивается печатью как длинным рядом. Например, для выведенных выше раз, я бы получил 457800000000 в качестве суммы. И что это, возможно, даже должно быть?

В любом случае, как я могу суммировать значения времени в отчете? Для вышеуказанных временных интервалов я хотел бы получить 12:43:00 в качестве суммы. Если моя голова еще раз не подвела меня по математике ... но вы поняли: p

+1

Как вы, как указано ниже, суммируемое значение является значением «галочка». Вы также можете увидеть это, вычислив количество секунд в разы выше: 07:02:00 = 25320s и 05:41:00 = 20460s. 25320 + 20460 = 45780. – Dan

ответ

14

раздувания решение раздражающе просто ... Почему бы не я просто попытался, что в первую очередь? Ну ... может быть, потому что я не понимаю, что я имел доступ к TimeSpan класса ... возможно, потому что я думал, что я слепой ... Но в любом случае, здесь это:

=TimeSpan.FromTicks(Sum(Fields!TheTime.Value)) 

D'Oh!

+1

Мне нужно было префикс 'System' - например. = System.TimeSpan.FromTicks (Sum (Поля! Hours.Value)) –

+0

@David: Тогда у вас, вероятно, не было 'using System;' в вашем файле кода – Svish

0

Что, вероятно, происходит, когда вы показываете Fields! TheTime.Value, SSRS достаточно умен, чтобы узнать, как DateTime поле типа

при добавлении суммы там она думает, что это числовое поле типа и отображает его в качестве таковых (то есть, он подытоживает количество «тики» в каждой области TimeSpan)

попробовать специально форматирование суммарное значение как datetime в свойствах поля, и оно, вероятно, будет правильно отображаться

1

@Svish - я удалил предыдущий потому что у меня была неопределенность в отношении моего ответа, но я согласен с @pfunk.

Я, наконец, получил поддержку SSRS и имел игру, и это, безусловно, похоже на то, что ваше большое число - это количество тиков, так что похоже, что немного форматирования результата будет работать для вас.

Интересно, что мой предыдущий свернутый ответ был обходным путем для суммирования значений DateTime (с использованием типа данных SQL Server DATETIME в моем запросе), которые вы не можете сделать в SSRS (и SQL), потому что вы не можете суммировать DATETIME. Я включу его здесь снова для будущей справки, но я думаю, что это было немного касательной раньше :)

Приведенный ниже код преобразует поле DateTime в double, суммирует результат, а затем преобразует его обратно в DateTime и форматы это для чч: мм: сс

=Date.FromOADate(Sum(Fields!TheTime.Value.ToOADate())).ToString("hh:mm:ss") 
+0

Где найти функции Date.FromOADate и ToOADate()? Код не работает. Делает красное подчеркивание в визуальной студии, хотя я могу скомпилировать.Но когда я запускаю его, я просто получаю #Error в этих полях. – Svish

+0

FromOADate и ToOADate - это методы класса DateTime, а не класса TimeSpan, и я считаю, что ваш был TimeSpan. Хорошая новость о вашем решении - вам не нравится просто, когда это простой ответ :) –