选择是否在30天内发生了最近6次访问

时间:2016-09-16 10:27:55

标签: crystal-reports

使用Crystal 2013,我的报告分组由customer_id组成。详细信息是客户访问过的时间(datetime)。我已经弄清楚如何检测至少6次访问,但我想检查这些访问是否在30天内发生。

我想显示客户的所有访问,但我想只显示符合条件的组。我是否需要Whileprintingrecords在每个组的第一个和第六个记录之间执行datediff?我怎么能这样做?

这就是我所拥有的:

30 >= DateDiff ("DD", (if {Command.ROW} = 1 then {Command.Visit_START},
  (if {Command.ROW} = 6 then{Command.Visit_STOP}))

1 个答案:

答案 0 :(得分:0)

您是否可以按降序排序组?我有一个想法,但如果它们最新分组到最旧,那么对你来说就不那么重要了。

<强> WhileReadingRecords:

在每组中,您需要确定第1次和第6次访问。 (您当前正在禁止任何小于6的组。)为此,我将创建一个名为Counter的共享变量,每个记录递增1,每次到达时重置新组。 (在组头中将其设置为零。)

接下来,您还需要另外两个名为FirstDateSixthDate的共享变量。如果Counter分别等于一个或六个,则填充日期值。就像Counter一样,每次小组更改时都会重置这些内容。

<强> WhilePrintingRecords:

如果一切正常,您现在应该拥有计算所需的两个日期值。在当前的抑制公式中添加一个附加子句:

....
AND
DateDiff("d", FirstDate, SixthDate)