我正在使用 Crystal Reports XI R2。
我的表按日期有交易数据。我有一个按天设置的组和一个摘要,以计算每天的交易数量。我还设置了一个运行总计,以便为每一天提供年初至今的计数。当然,它会根据年份的变化重新设置。
我的目标是能够找到昨天的 YTD 计数与去年同一日期的相同计数之间的差异。
编辑:我错报了目标。不是仅仅能够找到昨天的差异,而是能够找到一系列日子中的每一天。
我正在使用 Crystal Reports XI R2。
我的表按日期有交易数据。我有一个按天设置的组和一个摘要,以计算每天的交易数量。我还设置了一个运行总计,以便为每一天提供年初至今的计数。当然,它会根据年份的变化重新设置。
我的目标是能够找到昨天的 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 部分中的每个字段上插入摘要。