我正在创建一个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。
答案 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}) + '*'