日期范围参数 - 包括记录选择中的边界

时间:2012-04-18 11:58:15

标签: parameters crystal-reports report selection record

我正在使用Crystal Reports 12.0.0.683,其中我使用date类型的参数并设置为允许范围值。比我想在记录选择公式中使用它。我正在设置包含此值并使用此选择公式:

(not HasValue({?PARAM_DATE}) OR 
(
    if HasLowerBound({?PARAM_DATE}) and HasUpperBound({?PARAM_DATE}) then
                ({VIEW_REPORT_1.DATE_DUE} > Minimum({?PARAM_DATE})) and 
                        ({VIEW_REPORT_1.DATE_DUE} < Maximum({?PARAM_DATE}))
    else if HasLowerBound({?PARAM_DATE}) and not HasUpperBound({?PARAM_DATE}) then
                ({VIEW_REPORT_1.DATE_DUE} > Minimum({?PARAM_DATE})) 
    else if HasLowerBound({?PARAM_DATE}) and not HasUpperBound({?PARAM_DATE}) and IncludesLowerBound({?PARAM_DATE}) then
                ({VIEW_REPORT_1.DATE_DUE} >= Minimum({?PARAM_DATE})) 
    else if not HasLowerBound({?PARAM_DATE}) and HasUpperBound({?PARAM_DATE}) then
                ({VIEW_REPORT_1.DATE_DUE} < Maximum({?PARAM_DATE}))
    else if not HasLowerBound({?PARAM_DATE}) and HasUpperBound({?PARAM_DATE}) and IncludesUpperBound({?PARAM_DATE}) then
                ({VIEW_REPORT_1.DATE_DUE} <= Maximum({?PARAM_DATE}))
))

我使用IncludesUpperBoundIncludesLowerBound,但仍未选择正确的记录。

例如,我有DATE_DUE 2012-03-30,如果我设置参数2012-03-30并选择包含此值,则过滤掉记录。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

你并没有在任何地方使用小于或等于/大于或等于它,所以它不会包含等于的最大值或最小值。

您可以通过以下方式大大简化代码:

not(hasvalue({?PARAM_DATE}))
or {VIEW_REPORT_1.DATE_DUE} in {?PARAM_DATE}
相关问题