【问题标题】:How do I Loop through a schedule in Crystal Reports如何在 Crystal Reports 中循环执行计划
【发布时间】:2025-11-27 22:30:02
【问题描述】:

我正在 Crystal Reports 2008 中构建一个报表。该报表正在处理员工的日程安排。有时间表打开的时间段,也有时间表不可用的时间段。

目前,我已经构建了我的逻辑,以便它找到不可用时间的开始和结束。他们的报告告诉我该特定员工有多少小时不可用。

我的问题是,有时,员工在他们的日程安排开始时有一个块标记为“不可用”,而在一天结束时有一个块标记为“不可用”,但在两者之间他们是“开放的”。因此,报告称该员工一整天都在外面,但他们实际上在工作。告诉这些特定的员工如何安排他们的一天不是一种选择 - 他们决定自己的日程安排,而我编写报告以满足他们的需求。

SCHEDULE_TIME   EMP_ID  UNAVAILABLE_CODE    WORK_LENGTH
7/5/2011 11:00  100     NULL                    15
7/5/2011 11:15  100     NULL                    15
7/5/2011 11:30  100     NULL                    15
7/5/2011 11:45  100     NULL                    15
7/5/2011 12:00  100     15                      5
7/5/2011 17:00  100     15                      5

此示例显示某人将如何计算 5 小时的不可用时间段,但它只有 2 次约会。对于代码,我在约会时间之间使用 DATEDIFF。

(本质上,他们已经构建了多个“不可用”块,我的逻辑每天只能容纳一个“不可用”块)。

我很确定我需要在报告中运行一种 DO...WHILE 循环,以计算不可用的总小时数。我只是不确定如何在 Crystal Reports 中构建循环。

【问题讨论】:

  • 您能否提供有关您的报告的更多技术细节?数据模型是什么样的?你是如何计算这些块等的?

标签: crystal-reports logic reporting


【解决方案1】:

也许我错过了一些东西,但你想做的事情看起来很简单。两个明显的选择:

  1. 运行总数: 将该字段设置为 {TABLE.WORK_LENGTH} 将类型设置为 sum 将评估公式设置为 not(isnull({TABLE.UNAVAILABLE_CODE})) 设置更改组/字段 {TABLE.EMP_ID} 时的重置(假设您要查找每位员工的总数)

  2. 公式/总和: 使用if not(isnull({TABLE.UNAVAILABLE_CODE})) then {TABLE.WORK_LENGTH} else 0 创建一个公式字段不可用时间 在 {TABLE.EMP_ID} 上创建一个组 在组页脚中的公式字段上创建一个总和

【讨论】:

  • 您可能一头雾水——唯一的问题是它是一个命令对象,因此我需要将不可用时间公式编程到 SQL 中,然后可能使用运行总计或总和.我会试一试,谢谢!