Crystal 按浮动时间报告组数据

Crystal reports group data by floating hours

例如,我有 SQL table 结构如下所示。 RASP_DATE表示火车发车的时间,RACE_HOURS表示火车行驶的小时数。

RASP_DATE                  RACE_HOURS
01.10.2020 15:05:00        4
01.10.2020 15:35:00        3
01.10.2020 16:10:00        8
01.10.2020 16:25:00        6

我需要根据这些数据开发一个报告,以计算每小时的总行程时间。例如,根据上面的示例,报告将显示从 15:00 到 16:00 的总行程时间为 7 小时,从 16:00 到 17:00 - 14 小时。使用 Crystal 报告中的组可以轻松完成此任务。但是,任务不同 - 我需要计算“运行”小时内的旅行小时数。用户输入参数“分钟”(例如15),它是5的倍数,现在“小时”应该不是从15:00到16:00,而是从[=24]计算=] 到 16:15,从 17:15 到 18:15,等等。很可能,为此更改分组是必要的,但我不知道确切的公式或如何做这个。请给我一个提示。

我现在无法对其进行测试,但请尝试以下操作。请注意,如果 RASP_DATE 可以包含秒,则可能会调整公式。

  1. 创建一个名为“小时”的公式

    小时({TableName.RASP_DATE})

  2. 创建一个名为“分数”的公式

    minute({TableName.RASP_DATE}) \ {?minutes} //运算符是整数除法

  3. 按“小时”公式创建组

  4. 按“分数”公式创建组

  5. 在组中放置一个汇总字段以汇总 RACE_HOURS。

我认为这为获得完整解决方案指明了方向。

它是这样工作的:

  1. 创建了新的操作员“分钟”(数字)。

  2. 创建了新公式“floating_hour”:

    if minute({TableName.RASP_DATE}) < {?minutes} then
    time(hour({TableName.RASP_DATE})-1,{?minutes},0) else
    if minute({TableName.RASP_DATE}) >= {?minutes} then
    time(hour({TableName.RASP_DATE}),{?minutes},0) 
    
  3. 按“RASP_DATE”创建了一个群组(按周排序)

  4. 按“floating_hour”公式创建了一个组。

  5. 在“floating_hours”组中汇总RACE_HOURS。