Crystal 10 中的数字字段

Numberfield to time in Crystal 10

我是 crystal 的新手,如果这是一个愚蠢的问题,请原谅。我在 Sage ERP 中有一个数据库字段是时间,存储为 GMT 时间,字段类型是数字。因此,例如,归档中的数据将为 8461110 (08:46) 或 13021054 (13:02)。现在在 crystal 我需要将这个字段转换为时间,因为我需要 select 两次之间的数据。我昨天一直在为此苦苦挣扎,但没有运气。

我使用以下代码创建了一个公式字段,但我得到的结果是 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?

问题是你错过了这个 :。在 Crystal Reports 中,只要你想给变量赋值,语法就是 :=。所以你的公式将是

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);