水晶报告逐年比较运行总计



我正在使用Crystal Reports XI R2。

我的表包含按日期划分的交易数据。 我有一个按天设置的小组和一个摘要,用于计算每天的交易。 我还有一个运行总计集,以每天提供年初至今的计数。 当然,它会根据年份的变化重置。

我的目标是能够找到昨天的年初至今计数与去年同一日期之间的差异。

编辑:我错误地陈述了目标。 它不是能够找到昨天的差异,而是在一定天数中的每一天。

创建以下两个公式字段:

//{@LastYearToDate}
If {table.dateField} IN LastYearYTD Then
  1
Else
  0
//{@ThisYearToDate}
If {table.dateField} IN YearToDate Then
  1
Else
  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

使用共享变量存储每年的年初至今总计(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    

将这两个都放入组页脚(禁止)中,并在组标题中添加一个字段以执行减法。

最新更新