Crystal reports 参数为空时如何传递null值

Crystal reports 参数为空时如何传递null值,crystal-reports,Crystal Reports,我正在从数据库中开发一个Crystal报表,并使用命令对象在Crystal报表本身中设置一个参数值。我的问题是,当我运行Crystal报告时,如果我将任何参数保留为null,它将返回数据库中的所有记录。这怎么可能呢?Crystal Reports要求每个参数字段都有一个值;不允许使用空值 如果您使用的是命令对象,则需要在SQL中使用如下语法: --t-sql syntax; assumes numeric value and -1 is the value chosen to represent

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

Crystal Reports要求每个参数字段都有一个值;不允许使用空值

如果您使用的是命令对象,则需要在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

如果您使用的是“标准”数据库链接(与命令对象相反),请查看我的帖子。

如果您在数据库命令中使用参数,则不能使用可选参数。但是,如果您使用的是CR2008(我认为是在添加这些参数时),则可以将参数设置为可选参数,然后使用HasValue()函数查看用户是否选择了值

记录选择:

If HasValue({?MyParm}) Then
   {Command.MYFIELD} = {?MyParm}
Else
    True;

实际上,在以后的版本中,您可以使用可选参数。