当参数保留为空时如何传递空值

时间:2010-01-30 10:56:14

标签: crystal-reports

我正在从数据库开发Crystal Report,并使用Command对象在Crystal Reports本身中设置参数值。我的问题是,当我运行Crystal Report时,如果我将任何参数保留为null,它将返回数据库中的所有记录。怎么可能?

2 个答案:

答案 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