0

Microsoft SQL Server Report Builder でレポートを作成していて、今日から次の 5 営業日のみを表示する式を作成しようとしています (つまり、テーブルに 5 つの列があり、今日から開始して次の 5 営業日まで進む)日々)。その日が土曜日または日曜日で、関数を使用して列挙値を使用すると 6 または 7 が返されるWeekday場合は、次の営業日にスキップします。現在、今日の日付の列の後の最初の列にこの式があります

IIf(Weekday(DateAdd("d",1,Today()),2)=6,DateAdd("d",3,Today()),
(IIf(Weekday(DateAdd("d",1,Today()),2)=7,DateAdd("d",2,Today()),
DateAdd("d",1,Today()))))

そしてそれはうまくいきません。これは、水曜日、木曜日、または金曜日のような日がある場合、週末に十分な日がスキップされていないためだと思います.

4

2 に答える 2

2

営業日から開始すると想定できる場合は、使用できる簡単な式があります。

=IIF(6 - WeekDay(Today()) - X < 0, DateAdd("d", X + 2, Today()), DateAdd("d", X, Today()))

ここXで、その列が開始日からの日数です。

残念ながら、開始日が土曜日または日曜日の場合は機能しませんが、営業日のみ必要な場合は問題ありません。

于 2012-12-13T02:33:31.380 に答える
1

Today() を使用する代わりに、前の列の値を使用する必要があると思います。したがって、最初の列では現在の日付になります。(週末から開始できる場合は、同じ式を適用します)。この状態だとスイッチケースの方がやりやすいと思います。

当日列の計算式

=switch (
Weekday(today) = 6, dateadd("d", 2, today),
Weekday(today) = 7, dateadd("d", 1, today),
Weekday(today) < 6, today
)

2 番目の列では、today() の代わりに「Fields!previous_column_name.Value」を使用します。

=switch (
Weekday(dateadd("d", 1, Fields!previous_column_name.Value)) = 6, dateadd("d", 3, Fields!previous_column_name.Value),
Weekday(dateadd("d", 1, Fields!previous_column_name.Value)) = 7, dateadd("d", 2, Fields!previous_column_name.Value),
Weekday(dateadd("d", 1, Fields!previous_column_name.Value)) < 6, dateadd("d", 1, Fields!previous_column_name.Value)
)

3 番目の列では、2 番目の列を previous_column として使用します。

これがあなたを助けることを願っています。

于 2012-12-13T08:21:30.267 に答える