我有一个带有日期参数的 SSRS 报告,该参数定义了我们希望报告的一周的开始。我希望此参数的默认日期根据嵌套的 IIF 语句显示如下,该语句使用一周中的当前日期来确定参数应显示为默认值的日期(我在括号中包含了 1 月的示例日期):
- 星期一(
- 18日)=上周星期一(11日)
- 星期二(19日)=上周星期一(11日)
- 星期三(20日)=上周星期一(11日)
- 星期四(21日)=上周星期一(11日)
- 星期五(22日)=本周星期一(18日)
- 星期六(23日)=本周星期一(18日)
- 星期日(24日)=本周星期一(18日)
试图编写一个表达式来完成此操作,但到目前为止,我无法根据需要显示参数。我写的表达是:
=IIF(DateInterval.Weekday = 1, 'Monday = Monday Last Week
DateAdd(DateInterval.Day, 2-WeekDay(Today), DateAdd(DateInterval.Day, -7, Today)),
IIF(DateInterval.Weekday = 2, 'Tuesday = Monday Last Week
DateAdd(DateInterval.Day, 2-WeekDay(Today), DateAdd(DateInterval.Day, -7, Today)),
IIF(DateInterval.Weekday = 3, 'Wednesday = Monday Last Week
DateAdd(DateInterval.Day, 2-WeekDay(Today), DateAdd(DateInterval.Day, -7, Today)),
IIF(DateInterval.Weekday = 4, 'Thursday = Monday Last Week
DateAdd(DateInterval.Day, 2-WeekDay(Today), DateAdd(DateInterval.Day, -7, Today)),
IIF(DateInterval.Weekday = 5, 'Friday = Monday This Week
DATEADD("d", 1 - DATEPART(DateInterval.WeekDay, Today,FirstDayOfWeek.Monday), Today),
IIF(DateInterval.Weekday = 6, 'Saturday = Monday This Week
DATEADD("d", 1 - DATEPART(DateInterval.WeekDay, Today,FirstDayOfWeek.Monday), Today),
IIF(DateInterval.Weekday = 7, 'Sunday = Monday This Week
DATEADD("d", 1 - DATEPART(DateInterval.WeekDay, Today,FirstDayOfWeek.Monday), Today),
Today
)
)
)
)
)
)
)
我正在尝试的可能吗?如果是这样,我哪里出错了?另外,我知道注释会导致表达式出错,我在示例代码中添加了注释以使其更具可读性。
以下内容将适合您:
=DateAdd("ww", Datediff("ww", CDate("1900-01-01"), DateAdd("d", -5, Today)), CDate("1900-01-01"))
前提是它找到固定时间点(1900 年 1 月 1 日)和 5 天前(让默认周在星期五更改)之间的周数,然后将该周数添加到同一固定点,给出当前一周的开始,如果是星期一到星期四,则为前一周。