如何在Crystal Reports 2008中将表示时间的十进制数转换为实际时间?例如:" 1.5"代表1:30

时间:2015-02-27 16:54:07

标签: crystal-reports

我正在尝试编辑显示工单的时间限额的现有Crystal报表。预算时间/实际时间/剩余时间类型交易。

这些字段显示为未正确转换报表数据字段的时间。报告的人已经有了一些公式,但我不确定它在做什么。

公式:标准时间

Stringvar array Std_Time := split(replace(cstr({WOMNT_CARD.STANDARD_HOURS_DURATION}),",",""),".");

val(Std_Time[1])*60+val(Std_Time[2])

报告中使用的字段是@Standard Time(Number)的总和。

如何解决此问题,以便正确转换这些数字?

1 个答案:

答案 0 :(得分:0)

您发布的公式执行以下操作:

首先,它使用{WOMNT_CARD.STANDARD_HOURS_DURATION}函数将cstr字段的数据类型转换为字符串,结果被replace函数删除了逗号,结果字符串被拆分使用点字符作为分隔符进入数组。

因此,对于值1.5,Std_Time变量将保留以下

Std_Time[1]→1

Std_Time[2]→5

最后,它通过将第一个索引的第一个值乘以60来计算结果,并将第二个索引的值加上它。值1.5变为1 * 60 + 5 = 65

如果1.5必须代表1:30,那么最后一行必须变为

val(Std_Time[1]) * 60 + 60 * val(Std_Time[2]) / 10

因为60 * 5/10 = 30

或者您可以简单地使用以下

60 * val(replace(cstr({WOMNT_CARD.STANDARD_HOURS_DURATION}),",",""))

因为60 * 1.5 = 90