2017-02-23 14 views
1

日付パラメータのデフォルト値を次の月の最初の営業日に設定しようとしています。つまり、月の第1日が土曜日または日曜日の場合は、月曜。 私はこれを持っていますが、何らかの理由でレポートを実行しようとすると、ローカルのレポート処理中にエラーが発生し、何がうまくいかないのかわからないというメッセージが表示されます。誰も助けることができますか?翌月の最初の営業日

= iif (datepart("dw", dateadd("m",1,DateAdd("d",1-DatePart("d",Today()),Today()))) = 7, 
dateadd("m",1,DateAdd("d",3-DatePart("d",Today()),Today())), 
iif (datepart("dw", dateadd("m",1,DateAdd("d",1-DatePart("d",Today()),Today()))) = 1, 
dateadd("m",1,DateAdd("d",2-DatePart("d",Today()),Today())), 
dateadd("m",1,DateAdd("d",1-DatePart("d",Today()),Today())))) 

答えて

0
=Today.AddMonths(1).AddDays(-Today.Day + 1).AddDays(
    SWITCH(
    Today.AddMonths(1).AddDays(-Today.Day + 1).DayOfWeek = DayOfWeek.Sunday, 1, 
    Today.AddMonths(1).AddDays(-Today.Day + 1).DayOfWeek = DayOfWeek.Saturday, 2, 
    True, 0 
)) 

これは、翌月の1日を返します。

Today.AddMonths(1).AddDays(-Today.Day + 1) 

switch文は、次の月の1日に基づいて、追加する日数を決定します。

.AddDays(SWITCH(
     Today.AddMonths(1).AddDays(-Today.Day + 1).DayOfWeek = DayOfWeek.Sunday, 1, 
     Today.AddMonths(1).AddDays(-Today.Day + 1).DayOfWeek = DayOfWeek.Saturday, 2, 
     True, 0 
    )) 
+0

完全に動作します、ありがとう – Quazi200

0

試してみてください。

=Switch(
WeekDay(DateSerial(Today.Year,Today.Month,1).AddMonths(1),FirstDayOfWeek.Monday)=6, 
    DateSerial(Today.Year,Today.Month,1).AddMonths(1).AddDays(2), 
WeekDay(DateSerial(Today.Year,Today.Month,1).AddMonths(1),FirstDayOfWeek.Monday)=7, 
    DateSerial(Today.Year,Today.Month,1).AddMonths(1).AddDays(1), 
true, DateSerial(Today.Year,Today.Month,1).AddMonths(1) 
) 

週の最初の日月曜日と仮定すると。

希望します。

+0

完璧に動作します、ありがとうございます – Quazi200

関連する問題