【问题标题】:Parameter in IF condition for record selection in Crystal ReportCrystal Report中记录选择的IF条件中的参数
【发布时间】:2014-01-29 18:30:55
【问题描述】:

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

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

【问题讨论】:

    标签: crystal-reports


    【解决方案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}) + '*'
    

    【讨论】:

    • 感谢您的帮助。您能否建议我如何将以下 sql 查询转换为水晶报表中的记录选择公式。其中 += " 和 (upper(i.fnavn) 像 '%" + Navn.ToString().ToUpper() + "%'" + " 或 upper(i.enavn) 像 '" + Navn.ToString()。 ToUpper() + "%'" + " or upper(i.navn) like '" + Navn.ToString().ToUpper() + "%') ";
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多