我正在使用Crystal Reports XI R2。
我的表格按日期包含交易数据。我有一个按天设置的小组和一个摘要来计算每天的交易数量。我还有一个运行总计设置,以给出每天的年份。当然,它会重置一年中的变化。
我的目标是能够找到昨天和去年同一天的同一天数之间的差异。
编辑:我错了目标。它不是能够在昨天找到差异,而是在几天内找到每一天。答案 0 :(得分:0)
创建这两个公式字段:
//{@LastYearToDate}
If {table.dateField} IN LastYearYTD Then
1
Else
0
//{@ThisYearToDate}
If {table.dateField} IN YearToDate Then
1
Else
0
在ReportFooter部分的每个字段中插入摘要。
答案 1 :(得分: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
将这两者放入组页脚(已抑制)并添加一个字段以进行组头中的减法。