0

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

(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 并选择包含此值,则记录将被过滤掉。

我究竟做错了什么?

4

1 回答 1

3

您没有在任何地方使用小于或等于/大于或等于,因此它不会包含等于最大值或最小值的值。

您可以通过这样做大大简化您的代码:

not(hasvalue({?PARAM_DATE}))
or {VIEW_REPORT_1.DATE_DUE} in {?PARAM_DATE}
于 2012-04-18T13:54:21.683 回答