【问题标题】:Crystal Reports: Optional Date ParameterCrystal Reports:可选日期参数
【发布时间】:2015-11-16 22:20:03
【问题描述】:

我是 Crystal Reports 初学者,我正在编写一个报告,我正在尝试设置带有可选端点的日期范围查询。因此,例如,如果用户选择开始日期,则报告仅包含开始日期之后的结果。同样,如果用户选择结束日期,则报告仅包含结束日期之前的结果。

我正在使用以下过滤器,但预览器一直抱怨缺少日期。 (在我正在做的测试中,我选择了开始日期,没有结束日期。预览者抱怨我没有结束日期)

datevar start := IIF(HasValue({?Start Date}) and not isNull({?Start Date}), {?Start Date}, Date(1900, 01, 01));
datevar end   := IIF(HasValue({?End Date})   and not isNull({?End Date}),   {?End Date}, Date(3000, 12, 31));

({APPT.DATE} in start to end)

因此,如您所见,目的是检查报告是否定义了{?End Date} 参数。如果有,我们就使用它。如果没有,我们选择一个“巨大”的日期。但显然,IIF 需要定义真正的分支,即使它没有被使用。

是否有一种类似简洁的方法可以使用 Crystal 报表语言对该逻辑进行编码?

【问题讨论】:

    标签: crystal-reports


    【解决方案1】:

    回想起来,这是一个有点愚蠢的问题。但是由于我一直没能找到官方的语言语法规范,所以我会发布一个答案。

    解决方案是认识到 Crystal Reports 语言允许您根据控制语句定义变量,如下所示:

    datevar end := if (HasValue({?End Date})) then {?End Date} else Date(9999,12,01);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多