2012-05-21 107 views
0

这是我第一次尝试Stack溢出,所以希望你们都能帮助我。我很乐意在这里开始贡献,过去这是一个非常有用的工具。Crystal Report日期范围内的每个日期总计

好的,所以我想写一份报告,图表制造舒适性总过去的小时数。我所拥有的是表格的整合,列出每个制造订单并给出到期日期和完成日期。运行报表的人员会输入一个日期范围,我想生成一个沿着x轴的日期和y轴上的过期时间总和的图表。也许我错过了一个实现三形式技巧的东西,但我无法得到这个工作。我可以按截止日期进行分组,但这只能给出在特定日期过去的总订单。

我需要的是类似于下面的东西,那就是chartable:

For each (date in DateRange) { 
     If (Due Date < i) && (Comp Date > i) { 
      Past Due Hours = Past Due Hours + manufacturing order Hours 
     } 
    } 

我知道这是不是在Crystal语法,我只是想传达出的画面。任何帮助?

回答

0

这种问题经常出现 - 如果我理解正确。你有这样的事情?

OrderNum DueDate CompletedDate 
1  01/01/01 01/02/01 
2  01/01/01 01/01/01 
3  01/02/01 01/03/01 
4  01/02/01 01/02/01 

现在你需要做的第一件事就是让一个表(还有其他类似的方法),在它的所有日期并加入到你的数据集,所以你结了:

OrderNum DueDate CompletedDate Date 
1  01/01/01 01/02/01  01/01/01 
2  01/01/01 01/01/01  01/01/01 
3  01/02/01 01/03/01  01/01/01 
4  01/02/01 01/02/01  01/01/01 
1  01/01/01 01/02/01  01/02/01 
2  01/01/01 01/01/01  01/02/01 
3  01/02/01 01/03/01  01/02/01 
4  01/02/01 01/02/01  01/02/01 
1  01/01/01 01/02/01  01/03/01 
2  01/01/01 01/01/01  01/03/01 
3  01/02/01 01/03/01  01/03/01 
4  01/02/01 01/02/01  01/03/01 

接下来,您需要添加它决定订单是否是{@overdue}场:

if {table.duedate} < {table.date} and {table.completeddate} > {table.date} then 
1 
else 
0; 

确保你选择默认值,空值,以避免任何异常)。

现在,您可以创建绘图sum({@overdue}){table.date}

大号

+0

谢谢李先生,这是唯一的方法的曲线,似乎效率不高,当我们谈论返回几百行,这将变成数千如果他们在日期范围内为每个日期选择了一次行? –

+0

我这么认为。您正在查找的数据点根本不存在于当前数据集中。根据日期范围的大小,您可以考虑为每个数据点编写一个公式,但我想这会更加痛苦。 –

+0

因此,为了填补空白,我使用了“WITH”语句来创建日期范围。然后“CROSS JOIN”将其添加到我的数据中。我得到了我所需要的谢谢你的帮助。 –