Crystal reports Crystal报告按年度对运行总数进行比较 我使用水晶报表席R2。

Crystal reports Crystal报告按年度对运行总数进行比较 我使用水晶报表席R2。,crystal-reports,Crystal Reports,我的表按日期显示事务数据。我有一个按天设置的小组和一个总结,以给出每天的交易数量。我也有一套完整的计算方法,可以计算一年到目前为止的每一天。当然,它会随着年份的变化而重新设置 我的目标是能够找出昨天的年初至今数和去年同一天的相同数之间的差异 编辑:我错报了目标。它不能仅仅为昨天找到差异,而是为一系列天中的每一天找到差异。创建以下两个公式字段: //{@LastYearToDate} If {table.dateField} IN LastYearYTD Then 1 Else 0 //

我的表按日期显示事务数据。我有一个按天设置的小组和一个总结,以给出每天的交易数量。我也有一套完整的计算方法,可以计算一年到目前为止的每一天。当然,它会随着年份的变化而重新设置

我的目标是能够找出昨天的年初至今数和去年同一天的相同数之间的差异


编辑:我错报了目标。它不能仅仅为昨天找到差异,而是为一系列天中的每一天找到差异。

创建以下两个公式字段:

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

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

在ReportFooter部分的每个字段上插入一个摘要。

我终于确定了这一点。可能有一种更干净的方法可以做到这一点,但是

我将日期(以文本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个公式):

|


将这两个字段都放入组页脚(抑制),并在组页眉中添加一个字段进行减法。

您的数据源是什么?如果数据库可以在这里完成一些繁重的工作,可能会更容易。当然可以,但我仍处于“试用期”,还没有直接访问数据库的sql。
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