我正在使用Crystal Reports XI R2。Crystal Reports按年比較日期比較總計
我的表格按日期有交易數據。我有一個按天設立的小組,並且每天都有一個總結來計算交易次數。我也有一個運行總數設置爲每年至今的一年計數。當然,它會在一年中發生變化。
我的目標是能夠找到昨天YTD計數與去年同一日期相同的差異。
編輯:我錯誤的目標。它不能夠在昨天找到差異,而是在一定範圍內的每一天找到差異。
我正在使用Crystal Reports XI R2。Crystal Reports按年比較日期比較總計
我的表格按日期有交易數據。我有一個按天設立的小組,並且每天都有一個總結來計算交易次數。我也有一個運行總數設置爲每年至今的一年計數。當然,它會在一年中發生變化。
我的目標是能夠找到昨天YTD計數與去年同一日期相同的差異。
編輯:我錯誤的目標。它不能夠在昨天找到差異,而是在一定範圍內的每一天找到差異。
我終於明白了。有可能這樣做的更清潔的方式,但是....
我轉換的日期(始於文本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
把這兩個成組頁腳(抑制),並添加一個字段做減法進組報頭。
創建這兩個公式字段:
//{@LastYearToDate}
If {table.dateField} IN LastYearYTD Then
1
Else
0
//{@ThisYearToDate}
If {table.dateField} IN YearToDate Then
1
Else
0
插入在每個字段的摘要在ReportFooter區域。
什麼是您的數據源?如果數據庫可以在這裏完成一些繁重工作,可能會更容易。 – paulmelnikow 2012-04-19 02:01:34
絕對會,但我仍處於「試用期」,並且沒有直接訪問數據庫的權限。 – lurker78213 2012-04-19 12:57:13