使いやすいように設計された Microsoft リレーショナル データベース管理システムのファミリ。
> 1)契約完了日は「入居者マスタ」に別の欄を設けて契約更新日を入力いたします。
とりあえず**「テーブル[入居者マスタ]には、**
[契約更新完了日]という名前の
日付/時刻型のフィールドが定義されている」
という前提で統一することにします。
(社会人と学生とでフィールドを別々に設けない)
> 4)契約書に職業を記す欄があり学生ならば学校名(例えば京都大学)
> 社会人ならば就職先(例えば京都市)と書
きかれています。無職ならば無職と記されています。>
> 5)契約書に契約更新のことが書かれています。
> (例えば「入居年月日」より2年後とか1年毎か契約更新なしと書きされています。
>
> 4)、5)を見て就職入力欄に「1,3,5」を入力いたします。
そのご説明だと「[職業区分]の値が 5 である場合は、契約更新なし。
したがって、契約更新の通知対象には含まれない」
というところまでしか分かりません。
例えば「入居者が社会人([職業区分]の値が 1 )ならば一律 2 年ごとに契約を更新」なのか、
「 2 年ごとに契約を更新する社会人」と「 1 年ごとに契約を更新する社会人」の
2 種類のパターンが存在するのか、どちらなのでしょうか。
(入居者が学生([職業区分]の値が 3 )である場合も同様)
仮に後者のパターンを許容するなら、当然[職業区分]の値だけで
「何年ごとに契約を更新するか(更新間隔)」を判別することは出来ません。
[職業区分]とは別に、その更新間隔を表すフィールドが
[入居者マスタ]に定義されている必要があるはずです。
その辺りの決まりが判然としなかったため、
> 例えば [職業区分]の値が 1 なら 2年毎に契約更新、
> [職業区分]の値が 3 なら 1年毎に契約更新、
> [職業区分]の値が 5 なら 契約更新なし(自動更新)
> というつもりでおっしゃっているのでしょうか。
と、先の回答ではお尋ねしました。
仮に
「[職業区分]の値が 1 (社会人)なら一律 2 年ごとに契約更新」
「[職業区分]の値が 3 (学生)なら一律 1 年ごとに契約更新」
([職業区分]の値のみで契約更新の間隔が決まる)
ということで間違いないのであれば、例えば以下のような
選択クエリを作成なさればよろしいのではないかと思います。
( SQL ビュー)
SELECT [部屋マスタ].[マンションID],
[マンションマスタ].[マンション名],
[Q_現在入居者].[部屋ID],
[部屋マスタ].[部屋名],
[Q_現在入居者].[入居者ID],
[Q_現在入居者].[入居者氏名],
[Q_現在入居者].[入居年月日],
[Q_現在入居者].[退室年月日],
[Q_現在入居者].[職業区分],
Switch([Q_現在入居者].[職業区分]=1,2,[Q_現在入居者].[職業区分]=3,1,True,0) AS [契約更新間隔年数],
DateDiff("m", [Q_現在入居者].[入居年月日], Date()) + (Day([Q_現在入居者].[入居年月日])>Day(Date())) AS [本日までの入居月数],
[本日までの入居月数] \ ([契約更新間隔年数] * 12) AS [本日までの契約更新回数],
DateAdd("yyyy", [契約更新間隔年数]*([本日までの契約更新回数]+1), [Q_現在入居者].[入居年月日]) AS [次回契約更新予定日],
DateAdd("m", -1, [次回契約更新予定日]) AS [次回契約更新通知予定日の一ヶ月前の日付],
DateAdd("m", -2, [次回契約更新予定日]) AS [次回契約更新通知予定日の二ヶ月前の日付],
DateAdd("m", -3, [次回契約更新予定日]) AS [次回契約更新通知予定日の三ヶ月前の日付],
Date() AS [本日の日付],
DateSerial(Year(Date()), Month(Date()), 1) AS [当月の月初日],
DateSerial(Year(Date()), Month(Date())+3, 0) AS [再来月の月末日],
IIf([次回契約更新予定日] BETWEEN [当月の月初日] AND [再来月の月末日],"次期の契約更新が迫っています。",Null) AS [契約更新通知の可否],
[Q_現在入居者].[契約更新完了日]
FROM ([Q_現在入居者]
INNER JOIN [部屋マスタ]
ON [Q_現在入居者].[部屋ID] = [部屋マスタ].[部屋ID])
INNER JOIN [マンションマスタ]
ON [部屋マスタ].[マンションID] = [マンションマスタ].[マンションID]
WHERE [Q_現在入居者].[職業区分] In (1,3)
ORDER BY [マンションマスタ].[マンションID],
[部屋マスタ].[部屋ID];
※ テーブル/クエリ/フィールドの名前は、
実際につけられた名前に適宜修正すること。
※ [職業区分]のデータ型については全く触れられていないが、
ひとまず数値型であると仮定。
契約更新のクエリありがとうございます。
何とかクエリを開きました。
開き方は「部屋番号のパラメータを適当に入力し、再度パラメータ入力ボックスに適当に入力」しますとくえりがひらきました。
クエリを開いた結果ですが、
1)すべての入居者に対して「次回契約更新予定日」、「次回契約更新通知予定日の一か月前の日付」」、「次回契約更新通知予定日の二か月前の日付」、」、「次回契約更新通知予定日の三か月前の日付」が表示されました。お願いですが、契約更新のが対象となる三か月前、二か月前、当月の入居者のみを表示するようにお願いいたしたいのですが、ややこしいことを申しまして申し訳ないですがよろしくお願いを申し上げます。