IF条件中的参数,用于Crystal Report中的记录选择

时间:2014-01-28 10:51:16

标签: crystal-reports

我正在创建一个Crystal Report。在我的报告中有三个参数。现在我想根据参数值过滤数据。因此,在记录选择公式中,我编写了以下公式。

(
    {Table_Name.Field01} = {?Field01}
)
and
(
    if HasValue({?Field02}) Then 
        { Table_Name. Field02} Like ('*'+{?Field02}+'*') 
    else true
)
and
(
    if HasValue({?Field03}) Then 
        { Table_Name. Field03} = ToNumber({?Field03}) 
    else True
);

问题不起作用。它只有在我的IF条件中添加第三个参数时才有效。

and
(
    if HasValue({?Field03}) Then 
        { Table_Name. Field03} = ToNumber({?Field03}) 
    else True
);

任何人都可以告诉我如何解决问题。我正在使用Crystal Report 2008。

1 个答案:

答案 0 :(得分:1)

我建议避免使用可选参数 - 它们往往会破坏事物。相反,您可以设置默认值 - 如下所示:

参数;名称(默认为* ALL),头发(默认为* ALL)

然后我也倾向于避免在记录选择中使用if / then / else-坚持逻辑运算符(和/或):

({?name} = '*ALL' or {table.name} = {?name})
and ({?hair} = '*ALL' or {table.hair} = {?hair})

回答您的其他问题:

ucase({i.fnavn}) like '*' + ucase({?navn}) + '*'
or ucase({i.enavn}) like '*' + ucase({?navn}) + '*'
or ucase({i.navn}) like '*' + ucase({?navn}) + '*'