我是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报表语言是否有类似的清晰编码方式?
答案 0 :(得分:1)
回想起来,这是一个愚蠢的问题。但由于我还没能找到官方语言语法规范,我会发布一个答案。
解决方案是认识到Crystal Reports语言允许您根据控制语句定义变量,如:
datevar end := if (HasValue({?End Date})) then {?End Date} else Date(9999,12,01);