Parameters Crystal Reports-使用参数替代公式

Parameters Crystal Reports-使用参数替代公式,parameters,crystal-reports,report,formula,Parameters,Crystal Reports,Report,Formula,我有一份报告显示了前一天的一些统计数据。通常这是前一天(dateadd(“d”,-1,CurrentDate)),但如果是星期一(dayOfWeek=2),我需要它使用前三天(dateadd(“d”,-3,CurrentDate))。我知道如何做到这一点,但我需要这些值作为参数的默认值,并能够让用户能够更改此日期。据我所知,您不能将参数的默认值设置为变量。否则我怎么能做到这一点呢?你的公式应该基于你的变量。您还可以在Crystal中使用全局变量。 我现在没有水晶,但代码示例如下: numberv

我有一份报告显示了前一天的一些统计数据。通常这是前一天(dateadd(“d”,-1,CurrentDate)),但如果是星期一(dayOfWeek=2),我需要它使用前三天(dateadd(“d”,-3,CurrentDate))。我知道如何做到这一点,但我需要这些值作为参数的默认值,并能够让用户能够更改此日期。据我所知,您不能将参数的默认值设置为变量。否则我怎么能做到这一点呢?

你的公式应该基于你的变量。您还可以在Crystal中使用全局变量。 我现在没有水晶,但代码示例如下:

numbervar myVariable := {?yourParameter};
(dateadd("d", -myVariable, CurrentDate))

我会让您的日期参数可选(在CR 2008和更高版本中提供)。如果最终用户未选择任何值,则使用您描述的逻辑,否则,使用他们选择的日期。报告的记录选择公式中的此逻辑示例:

if hasvalue({?DateParameter}) then {table.field}={?DateParameter}
else 
  if dayofweek(currentdate)=2 then //today is Monday
    {table.field} in dateadd("d",-3,currentdate) to dateadd("d",-1,currentdate)
  else {table.field}=dateadd("d",-1,currentdate) 

我将您的公式更改为有效的Crystal语法。这将要求最终用户通过知道他们要查找的日期过去了多少天来选择日期,并且不处理默认参数值或所需的星期一逻辑。