使用 LastFullWeek 时,我得到最后一个星期日 - 星期六周,但对于我的报告,我想要最后一个星期一 - 星期日周。是否有任何简单的方法来获得这种行为,或者我是否必须为它编写自己的函数(这并不难,但对于这样一个常见的日期跨度来说并不方便。)
问问题
9959 次
5 回答
4
自定义功能:
//LastFullWeekEx
Function (DateVar date, Optional NumberVar firstDayOfWeek := crSunday)
(date - DayOfWeek(date, firstDayOfWeek)) - 6 TO (date - DayOfWeek(date, firstDayOfWeek))
用法:
// use with non-volatile DataDate and Sunday
{TABLE.DATE} IN LastFullWeekEx(DataDate)
// use with non-volatile DataDate and Monday
{TABLE.DATE} IN LastFullWeekEx(DataDate, crMonday)
测试:
// should return True
( Minimum(LastFullWeek) = Minimum(LastFullWeekEx(DataDate, crSunday)) ) AND
( Maximum(LastFullWeek) = Maximum(LastFullWeekEx(DataDate, crSunday)) )
于 2012-07-24T13:17:17.173 回答
1
而不是使用
LastFullWeek 的 {DATE}
使用表格
{DATE}-1 在 LastFullWeek
于 2014-04-07T20:05:37.683 回答
0
您别无选择,只能使用自定义公式,因为 Crystal Reports 使用固定周设置(美国)。所以一周是星期日到星期六,DayOfWeek 从星期日开始(值/索引 1)。
于 2012-07-25T07:26:32.530 回答
0
对于通过搜索引擎找到此问题的其他人,如果没有更好的答案,该代码:
{DATE} >= currentdate - dayofweek(currentdate, crMonday) - 6 AND
{DATE} < currentdate - dayofweek(currentdate, crMonday) + 1
于 2012-07-24T09:09:10.797 回答
0
将 +1 添加到 LastFullWeek 最小值和最大值:
DateVar Start := Minimum(LastFullWeek)+1; //Monday
DateVar End := Maximum(LastFullWeek)+1; //Sunday
编辑:由于LastFullWeek
总是将星期日作为一周的第一天,我们需要检查当前日期是否为星期日。如果是这样,我们需要减去一周:
// Check if the current day is Sunday
IF (DAYOFWEEK(CurrentDate) = 1)
THEN (
Start := Start - 7;
End := End - 7
);
示例:字符串的日期范围
StringVar LastWeekRange := ToText(Start) + " - " + ToText(End);
LastWeekRange;
返回示例:“MM/DD/YYYY - MM/DD/YYYY”
示例:选择日期范围内的所有日期
{datefield} >= Start and {datefield} <= End;
于 2018-11-21T17:17:45.893 回答