Crystal Reports,当前记录的最大值从下一记录的最小值中减去

时间:2013-09-19 13:46:49

标签: crystal-reports max crystal-reports-2008 min

我正在制作一份报告,监控制造公司不同部门之间的工作停工时间 以下是我必须使用的示例:

SHR - - 最小(开始时间) - - 最大(结束时间)
PUN - - 最小(开始时间) - - 最大(结束时间)
BEN - - 最小(开始时间) - - 最大(结束时间)
MTP - - 最小(开始时间) - - 最大(结束时间)
WLD - - 最小(开始时间) - - 最大(结束时间)
ASM - - 最小(开始时间) - - 最大(结束时间)

接下来我要做的是从Pun的最小值(开始时间)中减去SHR的最大值(结束时间),然后一直向下,从BEN,BEN从MTP等处PUN等。

公式或SQL查询的任何指针。谢谢!!


修改
这是我一直在尝试的一些代码的示例。
我面临的问题是每个进程ID有多个实际结束时间和实际开始时间,所以我必须澄清processID之间的调整 全球datetimevar伟大;
great:= Maximum({TimecardLines.lmlActualEndTime},{JobOperations.jmoProcessID});
全球datetimevar最少;
下({JobOperations.jmoProcessID});至少:= minimum({TimecardLines.lmlActualstartTime},{JobOperations.jmoProcessID});全球时间的getterdone;至少 - 很好

1 个答案:

答案 0 :(得分:0)

你有正确的想法;只需通过全局变量传递每组的最大值。假设您的报告按{JobOperations.jmoProcessID}分组,则可以执行以下操作:

// Place this formula in Group Footer
whileprintingrecords;
datetimevar latest := maximum({TimecardLines.lmlActualEndTime}, JobOperations.jmoProcessID});

// You can place this formula anywhere in your group as long as it is BEFORE the placement of the previous formula (otherwise the 'latest' variable won't represent the previous group
// Suppress this formula for the first group, as it will not be applicable
whileprintingrecords;
datetimevar latest;

datediff('d', latest, minimum({TimecardLines.lmlActualEndTime}, JobOperations.jmoProcessID})