我正在尝试编辑显示工单的时间限额的现有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)的总和。
如何解决此问题,以便正确转换这些数字?
答案 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