Crystal reports Crystal Report中记录选择的IF条件中的参数

Crystal reports Crystal Report中记录选择的IF条件中的参数,crystal-reports,Crystal Reports,我正在创建一个水晶报告。在我的报告中有三个参数。现在我想根据参数值过滤数据。因此,在记录选择公式中,我编写了以下公式 ( {Table_Name.Field01} = {?Field01} ) and ( if HasValue({?Field02}) Then { Table_Name. Field02} Like ('*'+{?Field02}+'*') else true ) and ( if HasValue({?Field03}) T

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

(
    {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。

我建议避免使用可选参数-它们往往会破坏东西。如果相反,您可以设置默认值-类似以下内容:

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

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

关于你的补充问题:

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

谢谢你的帮助。您能建议我如何将下面的sql查询转换为crystal report中的记录选择公式吗。其中+=”和(上面的i.fnavn)像“%”“+Navn.ToString().ToUpper()+”%“+”或上面的i.enavn像“+Navn.ToString().ToUpper()+”%“+”或上面的i.Navn像“+Navn.ToString().ToUpper()+”)”;
ucase({i.fnavn}) like '*' + ucase({?navn}) + '*'
or ucase({i.enavn}) like '*' + ucase({?navn}) + '*'
or ucase({i.navn}) like '*' + ucase({?navn}) + '*'