您可以在开始工作日表达式中使用之前的工作日表达式:
=dateadd("m",-3,
DateAdd(DateInterval.Day
, Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3
,DatePart(DateInterval.WeekDay, Today()) = 1, -2
,True, -1)
, Today())
)
但是,外部 DATEADD 函数可能会生成一个不是工作日的日期,并且您的查询将返回该日期的行,如果您的数据源与非工作日的日期不匹配,这不是问题,问题当您有非工作日期并且不想报告时会出现。
为简单起见,我将创建一个名为 ThreeMonthsPreviousDay 的 Hidden 参数(检查 Parameter 属性中的 Hidden 属性单选控件),将其设置为 Date/Time 数据类型并在 Default Values 属性中使用以下表达式。
=DateAdd(DateInterval.Month,-3,
DateAdd(DateInterval.Day
, Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3
,DatePart(DateInterval.WeekDay, Today()) = 1, -2
,True, -1)
, Today())
)
现在您可以获得前一个工作日前 3 个月的营业日期,因此请使用:
=DateAdd(DateInterval.Day,
Switch(
DatePart(DateInterval.WeekDay, Parameters!ThreeMonthsPreviousDay.Value) = 2, -3,
DatePart(DateInterval.WeekDay, Parameters!ThreeMonthsPreviousDay.Value) = 1, -2,
True, 0),
Parameters!ThreeMonthsPreviousDay.Value)
如果这有帮助,请告诉我。