Crystal 10中的Numberfield时间

时间:2016-04-01 06:57:07

标签: crystal-reports

我是水晶新手所以请原谅我这是一个愚蠢的问题。我在Sage ERP中有一个数据库字段是时间,存储为GMT时间,字段类型是数字。因此,例如,提交的数据将是8461110(08:46)或13021054(13:02)。现在在水晶我需要将此字段转换为时间因为我需要选择2次之间的数据。我昨天一直在努力解决这个问题,但没有运气。

我使用以下代码创建了一个公式字段,但我得到的结果是00:00:00

Local NumberVar TheHour;
Local NumberVar TheMin;
If Len(ToText({ICHIST.AUDTTIME}))  = 8 Then
    TheHour = ToNumber(Left(ToText({ICHIST.AUDTTIME}),2))
else
   TheHour = ToNumber(Left(ToText({ICHIST.AUDTTIME}),1));

If Len(ToText({ICHIST.AUDTTIME}))  = 8 Then
    TheMin = ToNumber(Mid(ToText({ICHIST.AUDTTIME}),3,2))
else
   TheMin = ToNumber(Mid(ToText({ICHIST.AUDTTIME}),2,2));
Time(TheHour,TheMin,00);

我做错了什么,为什么结果是00:00:00?

1 个答案:

答案 0 :(得分:0)

问题是你错过了这个:。在crysal报告中,只要您想为变量语法赋值,就会:=。所以你的公式将是

Local NumberVar TheHour;
Local NumberVar TheMin;
If Len(ToText({ICHIST.AUDTTIME}))  = 8 Then
    TheHour := ToNumber(Left(ToText({ICHIST.AUDTTIME}),2))
else
   TheHour := ToNumber(Left(ToText({ICHIST.AUDTTIME}),1));

If Len(ToText({ICHIST.AUDTTIME}))  = 8 Then
    TheMin := ToNumber(Mid(ToText({ICHIST.AUDTTIME}),3,2))
else
   TheMin := ToNumber(Mid(ToText({ICHIST.AUDTTIME}),2,2));
Time(TheHour,TheMin,00);