2012-04-18 114 views
0

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

(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,选择包括该值的记录得到过滤掉。

我在做什么错?

回答

3

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

可以大大这样简化代码:

not(hasvalue({?PARAM_DATE})) 
or {VIEW_REPORT_1.DATE_DUE} in {?PARAM_DATE}
+0

不知道为什么,这didnt早些时候工作时,我尝试这样做;)THX ... – 2012-04-19 11:05:56