Microsoft Access 掲示板

日付の更新

3 コメント
views
4 フォロー

契約日   2000/04/01 
自動更新      2年
満了日   2002/03/31 以降自動で2年更新を続ける
次回満了日 2004/03/31・・・・・・

本日:2020/05/27の場合、得たい結果は「2022/03/31」

上記のように自動で日付が更新していく計算式ができなく悩んでいます。

IIf([自動更新]=0,"---",DateAdd("yyyy",[自動更新],[契約日]-1))
上記のような感じで考えてみたのですが、2回目以降の更新ができないので悩んでしまいました。

説明が下手で申し訳ありませんが解決できる方法ありましたらよろしくおねがいします。

min
作成: 2020/05/27 (水) 22:38:59
通報 ...
1
hiroton 2020/05/28 (木) 09:27:32 f56bb@f966d

計算式をどうにかすればいいのであれば

IIf([自動更新]=0,"---",DateAdd("yyyy",[自動更新],[契約日]-1))

IIf([自動更新]=0,"---",DateAdd("yyyy",[自動更新],Nz([満了日],[契約日]-1)+1)-1)

でどうかな?

2

本日:2020/05/27の場合、得たい結果は「2022/03/31」

クエリて、本日の日付を基準に、満了日を自動計算したいということなら、クエリに下記のような演算フィールドを追加してください。

継続年数: DateDiff("yyyy",[契約日],Date())+(Format([契約日],"mmdd")>Format(Date(),"mmdd"))
更新回数: [継続年数]\[自動更新]
満了日: IIf([自動更新]<=0,"--",DateAdd("yyyy",([更新回数]+1)*[自動更新],[契約日]-1))

式の意味が分かりやすいように3つに分割しましたが、一つにまとめることもできます。

満了日: IIf([自動更新]<=0,"--",DateAdd("yyyy",(((DateDiff("yyyy",[契約日],Date())+(Format([契約日],"mmdd")>Format(Date(),"mmdd")))\[自動更新])+1)*[自動更新],[契約日]-1))
3

hirotonさん hatenaさんありがとうございました。
おかげさまで解決することができました。hatenaさんの回答でいけました。
まだ初心者ですが、また頑張ることができそうです。