Crystal reports 有价值的功能水晶报告

Crystal reports 有价值的功能水晶报告,crystal-reports,Crystal Reports,在我的报告中,我有3个参数when、week和year。 如果我选择When=schedule,则报告应在当前周运行,而不考虑参数窗口中给出的年和周值。 如果我选择when=Now,则报告应针对参数窗口中给定的周值和月值运行。 请建议 我试过了,但没有成功 if hasvalue({?Week}) and HasValue({?Year}) and {?When} = 'Now' Then {?Week} = {Command.WEEK} and {?Year} = {Command.YEAR}

在我的报告中,我有3个参数
when、week和year
。 如果我选择
When=schedule
,则报告应在当前周运行,而不考虑参数窗口中给出的年和周值。 如果我选择
when=Now
,则报告应针对参数窗口中给定的周值和月值运行。 请建议

我试过了,但没有成功

if hasvalue({?Week}) and HasValue({?Year}) and {?When} = 'Now'
Then
{?Week} = {Command.WEEK} and {?Year} = {Command.YEAR}
else
({?Week} = DatePart ("ww", Currentdatetime) and {?Year} = DatePart ("yyyy", Currentdatetime)
我的做法是:

而不是检查参数的
null
值。。为参数提供一个默认值,并在
false
条件下检查该值

假设我们将默认值设为
None

if {?Week}="None" and {?Year}="None" and {?When} = 'Now'
Then
{?Week} = {Command.WEEK} and {?Year} = {Command.YEAR}
else
({?Week} = DatePart ("ww", Currentdatetime) and {?Year} = DatePart ("yyyy", Currentdatetime)

注意:以上代码只是一个示例,请根据您的要求进行更改。

在crystal report中为空,INSTR函数将在这种情况下使用

ISNULL:-检查值是否为null,然后返回true或false。 说明:-检查字符串中的子字符串,如果找到,则返回索引else 0

查看链接中的详细信息

就你而言

if isnull({?Week}) and isnull({?Year}) and isnull{?When} 
 Then 
   return false
 else
    //in else again check with if else condition
   if {?When} = 'schedule'
     then
      do something
   else
      do something

您可以通过以下方式使用:

if {?Week}<>"" then {Command.WEEK}={?Week} else {Command.WEEK}={Command.WEEK}
如果{Week}“”,则{Command.Week}={Week}否则{Command.Week}={Command.Week}

希望这会有所帮助。

如果参数是可选的,则必须使用
hasvalue()
检查它是否确实有一个值;使用
isnull()
将不起作用,并将导致错误。