Crystal Reports,从下一条记录的最小值中减去当前记录的最大值
Posted
技术标签:
【中文标题】Crystal Reports,从下一条记录的最小值中减去当前记录的最大值【英文标题】:Crystal Reports, Maximum of current record subtracted from minimum of next record 【发布时间】:2013-09-24 15:23:41 【问题描述】:我正在编写一份报告,用于监控我的制造公司车间不同部门之间的工作停机时间。 这是我必须使用的示例:
SHR - - 最小值(开始时间) - - 最大值(结束时间) PUN - - 最小(开始时间) - - 最大(结束时间) BEN - - 最小值(开始时间) - - 最大值(结束时间) MTP - - 最小值(开始时间) - - 最大值(结束时间) WLD - - 最小值(开始时间) - - 最大值(结束时间) ASM - - 最小值(开始时间) - - 最大值(结束时间) 接下来我要做的是从Pun的Minimum(start TIme)中减去SHR的Maximum(end Time),然后一路向下,PUN来自BEN,BEN来自MTP等。
公式或 sql 查询的任何指针。谢谢!! 编辑 这是我一直在尝试的一些代码的示例。 我面临的问题是每个进程 ID 有多个实际结束时间和实际开始时间,所以我必须澄清 processID 之间的调整 global datetimevar great; 很棒 := 最大值 (TimecardLines.lmlActualEndTime, JobOperations.jmoProcessID); 全局 datetimevar 最少; 下一个(JobOperations.jmoProcessID); 最少 := minimum(TimecardLines.lmlActualstartTime, JobOperations.jmoProcessID); 全局时间变量 getterdone; 最少 - 很棒
【问题讨论】:
全局日期时间变量很棒; 很棒 := 最大值 (TimecardLines.lmlActualEndTime, JobOperations.jmoProcessID); 全局 datetimevar 最少;下一个(JobOperations.jmoProcessID); 最少 := minimum(TimecardLines.lmlActualstartTime, JobOperations.jmoProcessID); 全局时间变量 getterdone; 最少 - 很棒 【参考方案1】:你的想法是对的;只需通过全局变量传递每组的最大值。假设您的报告按 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)
【讨论】:
以上是关于Crystal Reports,从下一条记录的最小值中减去当前记录的最大值的主要内容,如果未能解决你的问题,请参考以下文章
Crystal Reports 2008 中的单个条形图需要多个页面