1

我正在使用 Crystal Reports XI R2。

我的表按日期有交易数据。我有一个按天设置的组和一个摘要,以计算每天的交易数量。我还设置了一个运行总计,以便为每一天提供年初至今的计数。当然,它会根据年份的变化重新设置。

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

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

4

2 回答 2

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    

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

于 2012-04-20T13:15:21.310 回答
0

创建这两个公式字段:

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

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

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

于 2012-04-19T02:38:41.137 回答