我正在从数据库开发Crystal Report,并使用Command对象在Crystal Reports本身中设置参数值。我的问题是,当我运行Crystal Report时,如果我将任何参数保留为null,它将返回数据库中的所有记录。怎么可能?
答案 0 :(得分:4)
如果您在数据库命令中使用参数,则无法使用可选参数。但是,如果您使用的是CR2008(我认为它们是在添加时),您可以将参数设置为可选,然后使用HasValue()函数查看用户是否选择了值。
RecordSelection:
If HasValue({?MyParm}) Then
{Command.MYFIELD} = {?MyParm}
Else
True;
答案 1 :(得分:-1)
Crystal Reports要求每个参数字段都有一个值;不允许使用空值。
如果您使用的是Command对象,则需要在SQL中使用如下语法:
--t-sql syntax; assumes numeric value and -1 is the value chosen to represent 'all values'
WHERE table.field = CASE
WHEN {?command_object_prompt} = -1 THEN table.field
ELSE {?command_object_prompt}
END
如果您使用的是“标准”数据库链接(而不是Command对象),请查看我的帖子Crystal Reports: Optional-Multi-Select Parameters。