我正在使用水晶报告,并试图让我花费多长时间完成一项任务。该报告目前从SQL中提取了一个可接受的日期时间和完成的日期时间。
我想要制作的是一个字段,您可以在其中查看完成任务需要多少个月,几天,几小时,几分钟和几秒钟。它在SQL中保存的方式是01/01/1901 00:00:00,例如在Accepted和Completed字段中。我目前已经建立了这个,但它没有准确地提取信息。请有人帮忙吗。感谢您的帮助。
StringVar varMonth := ToText(DatePart("m",{PROJECT_MGMT.STATUS_UPDATE_DATE}) - DatePart("m",{PROJECT_MGMT.PROJECT_ASSIGN_DATE}),0);
StringVar varDay := ToText(DatePart("d",{PROJECT_MGMT.STATUS_UPDATE_DATE}) - DatePart("d",{PROJECT_MGMT.PROJECT_ASSIGN_DATE}),0);
StringVar varHour := ToText(DatePart("h",{PROJECT_MGMT.STATUS_UPDATE_DATE}) - DatePart("h",{PROJECT_MGMT.PROJECT_ASSIGN_DATE}),0);
StringVar varMinute := ToText(DatePart("n",{PROJECT_MGMT.STATUS_UPDATE_DATE}) - DatePart("n",{PROJECT_MGMT.PROJECT_ASSIGN_DATE}),0);
StringVar varSecond;
NumberVar fff := DatePart("s",{PROJECT_MGMT.STATUS_UPDATE_DATE}) - DatePart("s",{PROJECT_MGMT.PROJECT_ASSIGN_DATE}) + 60;
if (fff >= 60) Then
fff = fff - 60;
varSecond = ToText(fff);
varMonth + " Months " + varDay + " Days " + varHour + " Hours " + varMinute + " Minutes " + ToText(fff) + " Seconds "
答案 0 :(得分:0)
在Crystal报表中,创建5个公式,每个月,每天,每小时,每分钟,每秒一个。 所有代码都是相同的,除了Interval类型值(“m”,“d”,“h”,“n”,“s”):
cStr(DateDiff("m", AcceptDate, CompleteDate),0)
需要转换为字符串才能删除小数。 然后你创建另一个公式,你把它们放在一起,如:
Formula1 + " months," + Formula2 + " days," + Formula3 + " hours," + ......
你明白了。
希望有所帮助,
克里斯
编辑:对不起,我在写完之后意识到它不起作用,因为它会显示总数的月份和日期等等。所以也许你需要计算差异。给我一些时间来解决这个问题。
编辑2: 好的,所以我认为你可以这样做的方法是使用以下类型的公式:
year(completeDate)- year(acceptDate)
会给你一年。您可以按月,日,小时等方式进行相同操作。然后将它们放在一个单独的公式中。唯一需要注意的是,如果你跨越一年,而不是12个月。说2013年10月到2014年2月。因此,如果年份大于1,您将必须输入一个“if”语句来检查月份是否大于12.你明白了吗?