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}-LastFullWeekの1
于 2014-04-07T20:05:37.683 に答える
0
検索エンジンでこの質問を見つけた他の人のためのコードは、より良い答えが得られない場合は、次のようになります。
{DATE} >= currentdate - dayofweek(currentdate, crMonday) - 6 AND
{DATE} < currentdate - dayofweek(currentdate, crMonday) + 1
于 2012-07-24T09:09:10.797 に答える
0
Crystal Reportsは固定週設定(米国)を使用するため、カスタム数式を使用する以外に選択肢はありません。したがって、1週間は日曜日から土曜日であり、DayOfWeekは日曜日から始まります(値/インデックス1)。
于 2012-07-25T07:26:32.530 に答える
0
LastFullWeekの最小値と最大値に+1を追加します。
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 に答える