> 1)契約更新のスケジューリングや鉄好き手続きの流れですが
> 契約更新の3か月前に周旋屋に電話をして
> 入居者名と契約更新が3か月前に来ていると通知します
> (周旋屋も契約更新を管理しており契約更新の対象の
> 入居者に対して書面にて通知されています。)
その通知を行なう間隔は「月ごと」と「日ごと」のどちらでしょうか。
もし前者である場合、毎月何日締めでその間隔を区切るのでしょうか。
例えば(ややこしいので[職業区分]の問題は一旦無視しますが)
仮に「毎月25日締め」で通知対象となる入居者を抽出するとして、
2017 年 3 月 26 日( 2017 年 4 月期)に通知書を発行する場合、
その月において通知対象となる入居者の条件は
「[次回の契約更新予定日]が
2017 年 6 月 26 日から 2017 年 7 月 25 日までの
範囲( 2017 年 7 月期)に含まれている者」
となるはずです。
更にそれぞれの入居者の[職業区分]が
「社会人」(1)であるか、「学生」(3)であるか
によっても、恐らくこの辺りの扱い方が
変わってくるのではないかと思われますが。
> 2)契約更新が完了された入居者に対する更新完了日を
> 契約更新完了日を設定しています。
[契約更新完了日]という名前の日付/時刻型のフィールドが存在するとして、
そのフィールドはどのテーブルに定義されているのでしょうか。
> なを契約完了者の2年後の契約更新も
> 新たに設定できるようにいたしたいです。
契約更新の通知および更新手続きが発生する都度、
それらの履歴(「いつ」「誰に」通知をし、
それらの通知を受けた「誰が」「いつ」手続きを済ませたか)を
データとして記録する必要があるのであれば、
[入居者マスタ]以外に専用のテーブルを設ける必要が
あるのではないかと思います。
> 1. [入居者マスタ]から「現在入居中」扱いになっている
> 入居者のレコードを抽出して、
>
> 2. それらの[入居年月日]とシステム日付を元に
> それぞれの入居者の[次回の契約更新予定日]を求めて、
とりあえず、上記の部分だけを実現しようとするのであれば、
既に作成済みの選択クエリ[Q_現在入居者]をベースとして、
以下のような選択クエリを新たに作成なさればよろしいでしょう。
( SQL ビュー)
SELECT [部屋マスタ].[マンションID],
[マンションマスタ].[マンション名],
[Q_現在入居者].[部屋ID],
[部屋マスタ].[部屋名],
[Q_現在入居者].[入居者ID],
[Q_現在入居者].[入居者氏名],
[Q_現在入居者].[入居年月日],
[Q_現在入居者].[退室年月日],
[Q_現在入居者].[職業区分],
DateDiff("m", [Q_現在入居者].[入居年月日], Date()) + (Day([Q_現在入居者].[入居年月日])>Day(Date())) AS [本日までの入居月数],
[本日までの入居月数] \ 24 AS [本日までの契約更新回数],
DateAdd("yyyy", 2*([本日までの契約更新回数]+1), [Q_現在入居者].[入居年月日]) AS [次回契約更新予定日],
DateAdd("m", -3, [次回契約更新予定日]) AS [次回契約更新通知予定日]
FROM ([Q_現在入居者]
INNER JOIN [部屋マスタ]
ON [Q_現在入居者].[部屋ID] = [部屋マスタ].[部屋ID])
INNER JOIN [マンションマスタ]
ON [部屋マスタ].[マンションID] = [マンションマスタ].[マンションID]
ORDER BY [マンションマスタ].[マンションID],
[部屋マスタ].[部屋ID];
※ テーブル/クエリ/フィールドの名前は、実際につけられた名前に適宜修正して下さい。