2012-04-18 72 views
1

我正在使用Crystal Reports XI R2。Crystal Reports按年比較日期比較總計

我的表格按日期有交易數據。我有一個按天設立的小組,並且每天都有一個總結來計算交易次數。我也有一個運行總數設置爲每年至今的一年計數。當然,它會在一年中發生變化。

我的目標是能夠找到昨天YTD計數與去年同一日期相同的差異。

編輯:我錯誤的目標。它不能夠在昨天找到差異,而是在一定範圍內的每一天找到差異。

+0

什麼是您的數據源?如果數據庫可以在這裏完成一些繁重工作,可能會更容易。 – paulmelnikow 2012-04-19 02:01:34

+0

絕對會,但我仍處於「試用期」,並且沒有直接訪問數據庫的權限。 – lurker78213 2012-04-19 12:57:13

回答

0

我終於明白了。有可能這樣做的更清潔的方式,但是....

我轉換的日期(始於文本YYYY-MM-DD)成文本爲mm/dd/yyyy格式:

stringvar yyyyear := {table.dateField}[1 to 4]; 
stringvar mmonth := {table.dateField}[6 to 7];; 
stringvar dday := {table.dateField}[9 to 10]; 

mmonth + "/" + dday + "/" + yyyyear 

分組通過此字段並將計數摘要插入組標題。創建一個單獨的字段每個日期的MM/DD部分:

{@textDate}[1 to 5] 

添加一個標誌,以查看是否在當前組報頭中的日期相匹配的先前:

if previous({@mm/dd}) = {@mm/dd} 
    then 1 
else 0 

使用共享變量來存儲每年YTD總計(2個公式):

shared numbervar totalsCurentYear; 

if {@prevDateFlag} = 1 then 
    totalsCurrentYear := totalsCurrentYear + Sum ({@transactionCount}, {@textDate}); 

totalsCurrentYear 

|

shared numbervar totalsLastYear; 

if {@prevDateFlag} = 1 then 
    totalsLastYear := totalsLastYear + Sum ({@transactionCount}, {@textDate}); 

totalsLastYear  

把這兩個成組頁腳(抑制),並添加一個字段做減法進組報頭。

0

創建這兩個公式字段:

//{@LastYearToDate} 
If {table.dateField} IN LastYearYTD Then 
    1 
Else 
    0 

//{@ThisYearToDate} 
If {table.dateField} IN YearToDate Then 
    1 
Else 
    0 

插入在每個字段的摘要在ReportFooter區域。