2012-05-21 108 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」將其添加到我的數據中。我得到了我所需要的謝謝你的幫助。 –