如何从水晶报表的十进制数计算小时和分钟



如何使用水晶报表公式从十进制数计算小时和分钟

小时和分钟

42.00
397.00
2.20
63.40
2.36
1.30
0.50
----------------
508.76
----------------

数值和508.76

我想把它转换成509.16 ->509 Hours 16 min

在76分钟内->60分钟换算成1小时,也就是509小时

剩余16分钟显示为分钟509.16

使用此方法实现:508 + (76/60)= 509,76%60 = 16

76/60商1,它被添加到整数部分508 + 1现在是509小时

76%6剩余16分钟,为16分钟

尝试此代码获取分数值

local numbervar sum_hours := sum({Command.TotalHours});
local numbervar fraction;
fraction := sum_hours - truncate(sum_hours);  
it gives 0.76, how to get 76

谁能解释完整的代码如何写下面的表达式和得到结果使用水晶报告公式

split 508.76 into 508 and 76 and calculate using below method
508 + (76/60) = 509, 76%60 = 16

我认为解决问题的最简单方法是转换单个值,以便它们所代表的时间以分钟表示,而不是"小时。分钟"。

该公式接受值5.38(5小时38分钟),并将该值分割成使用小数作为分隔符的字符串数组,将其转换为分钟。然后将小时乘以60,将其转换为分钟,并将剩余的分钟数相加。

Whileprintingrecords;
Shared NumberVar value:= 5.38;
Shared StringVar array x := split(ToText(value),".");
Shared NumberVar hours := ToNumber(x[1]) * 60;
Shared NumberVar minutes := ToNumber(x[2]);
hours + minutes;

一旦你把所有的数据转换成分钟,你可以很容易地把它们加起来,然后用这个公式把它转换回小时和分钟。将{@Test}替换为包含要转换回"minutes.hours"的总价值(以分钟为单位)的字段名。

WhilePrintingRecords;
ToNumber(ToText(Truncate({@Test}/60),0,"") & "." & ToText({@Test}Mod 60,0,""));

要将0.76转换为76,请乘以100:

local numbervar sum_hours := 508.76; //sum({Command.TotalHours});
local numbervar fraction;
local numbervar hours;
local numbervar minutes;
fraction := sum_hours - truncate(sum_hours);
hours := truncate(sum_hours) + (fraction mod 60);
minutes := remainder(fraction * 100, 60);
ToText(hours,0) + ' hours and ' + ToText(minutes,0) + ' minutes'

相关内容

  • 没有找到相关文章

最新更新