Developer29 Ответов: 1

Как рассчитать сумму часов в crystal report?


У меня есть общее количество часов в строковом формате (HH:MM:SS) в наборе данных.Я хочу вычислить сумму HH:MM: SS в crystal Report.

Например 52:42:04 +20:34:04 = 73:16:08
Я попробовал следующий код в функции...Но выход-00: 00: 00

Что я уже пробовал:

WhilePrintingRecords; 
NumberVar TotalSec :=  tonumber({TimeUsedReport.TotalHours});
NumberVar Hours   := Truncate  (Remainder ( TotalSec , 86400) / 3600) ; 
NumberVar Minutes := Truncate  (Remainder ( TotalSec , 3600) / 60) ; 
NumberVar Seconds := Remainder (TotalSec , 60) ;


Totext ( Hours ,   '00' ) +  ':' + 
Totext ( Minutes , '00' ) +  ':' + 
Totext ( Seconds , '00' ) 

Richard Deeming

Это еще один пример того, почему вы должны никогда храните даты и время в виде строк.

В конце концов, это не так, как если бы SQL не имел конкретный тип[^] для их хранения.

1 Ответов

Рейтинг:
7

Zunayed Shahriar

Вы можете попробовать это -

создайте формулу в деталях, которая преобразует HH:MI: SS за считанные секунды.Давайте назовем его @tot_seconds.

запишите этот код в Формулу -

локальный массив stringvar completetime;
local numbervar totalseconds;
completetime:=split({@combinetime},":");
totalseconds:= (3600*cdbl(completetime[1])) + (60*cdbl(completetime[2]))+(cdbl(completetime[3]));

Эта формула вернет общее количество секунд для каждой записи, показанной в разделе сведений. замените ваше поле @combinetime.

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

на этот раз мы преобразуем обратно в HH:MI:SS.создайте формулу и поместите ее в нижний колонтитул отчета.Запишите следующий код в Формулу -

заменить(cstr(floor(Sum ({@tot_seconds}) / 3600)),".00","")
+ ": "+replace(cstr(floor ((Sum ({@tot_seconds}) mod 3600)/60)),".00","")
+ ": "+replace(cstr(floor(Sum ({@tot_seconds}) mod 60)), " .00","")

Результат этой формулы покажет общее время в формате HH:MI:SS.

Источник: На форумах ASP.NET

Цитата:
Пожалуйста, отметьте это как решение, если это поможет.


Developer29

Это поле ошибки броска является обязательным...

Zunayed Shahriar

Смотрите, ссылка на источник... Вы получите полный разговор.

Developer29

Спасибо....сейчас он работает....

Zunayed Shahriar

Всегда пожалуйста