• 締切済み

支払日の土日設定

アクセスクエリで質問です。A,B,の得意先の支払日が15日で、今月14日が土曜日、15日が日曜日だとします。この場合、Aは13日に支払、Bは16日に支払されます。今アクセスクエリでは共に支払日欄は常に15となるようにしています。 これに土日の場合の前翌営業日の設定をもたせることは可能でしょうか?また、その場合の関数は何を使えばいいんでしょうか?詳しい方いらっしゃいましたら、ご教示下さい。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

#1でもご指摘のとおり、前日や後日がまた休日である場合がある。 このへんを考慮すると非常に面倒なプログラムになる。 アクセス関数では無理でしょう。 15日の前後は祝日が少ないが、月末日などになると厄介。 結局プログラム(VBA)のお世話にならないとダメではないかな。エクセル・アクセスとも、仕事に使うとVBAを使えることが必須(少なくとも必要な願意は避けられない)というのが、私の持論なのですが 本件はやり方によっては毎年変わる(メンテが必要)祝日テーブルなどが必要で面倒。 ーー エクセルの質問例ですが、内容は相当違うが、少し似た質問にこたえたことがある。 http://oshiete1.watch.impress.co.jp/qa6852051.html

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

第3月曜日が祝日になる7月(海の日)と9月(敬老の日)はもう一日ずれると思いますが... 一例です。 年と月のデータのフィールドがあって、前か後どちらにずれるかのフラグがあるとして [年]=2011 [月]=7 [払い]=1:前,2:後 とします。 モジュールに下記のユーザー定義関数を作成してください。 Function PAYDAY(NEN,TSUKI,HARAI) Dim PD,SD As Date PD = DateSerial(NEN,TSUKI,15) Select Cace Weekday(PD) Cace 1 '日曜日 If HARAI = 1 Then PAYDAY =13 If HARAI = 2 Then If TSUKI = 7 or TSUKI = 9 Then PAYDAY =17 Else PAYDAY =16 End If End If Case 2 '月曜日 If TSUKI = 7 or TSUKI = 9 Then If HARAI = 1 Then PAYDAY =12 If HARAI = 2 Then PAYDAY =16 End If Case 7 '土曜日 If HARAI = 1 Then PAYDAY =14 If HARAI = 2 Then If TSUKI = 7 or TSUKI = 9 Then PAYDAY =18 Else PAYDAY =17 End If End If End Select End Function クエリ上では 支払日:PAYDAY([年],[月],[払い])

関連するQ&A