我正在制作一个Crystal Report,它具有四个名为a
,b
,c
和d
的参数。
使用这些参数,我想从rptData
表中的四个名为'First','Second','Third'和'Fourth'的列中获取数据。
现在,我要加载提供a
和b
参数并保持c
和d
参数为空白的报告;打算使报告使用a
和b
参数过滤数据,并且将加载Third
和Fourth
中的所有匹配数据。换句话说,如果我要在SSMS中运行查询,就是这样。
select * from dbo.rptData where First = 'a' and Second = 'b';
我是Crystal Report的初学者。所以我这样尝试:从“报告”菜单->“选择公式”->“记录”并将其保存在此处:
if isnull({?a}) or {?a} = '' then true else
{rptData.First} like {?a}
and if isnull({?b}) or {?b} = '' then true else
{rptData.Second} like {?b}
....
也尝试这样:
if isnull({?a}) or {?a} = ''
then {rptData.First} = {rptData.First} else
{rptData.First} like {?a}
and ....
运行报表时,如果给出所有参数,它将加载预期的数据。如果我给出前两个/三个参数,它将返回一个空白报告。否则,它将加载所有数据。
使用HasValue()函数检查可选参数是否具有值。
(HasValue({?a}) or {rptData.First} like "*" + {?a} + "*")
AND
(HasValue({?b}) or {rptData.Second} like "*" + {?b} + "*")