空室情報作成

Anonymous
2017-03-16T20:36:45+00:00

アクセス2016 で空室管理をいたしたいと思います。

設定は 部屋名、入居日、退室日です。どのようにすれば、部屋名に空室になった部屋名を表示するようにしたいのですが。よろしくお願いいたします。

Microsoft 365 と Office | Access | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

45 件の回答

並べ替え方法: 古い順
  1. Anonymous
    2017-03-31T01:55:50+00:00

    > 1番目のクエリの名前適当ではいけませんのでしょうか。

    Access におけるオブジェクトの命名規則に違反しない限りは

    適当につけていただいてもそれはそれで構いませんが、

    既に指摘させていただいた通り、その「適用につけた」

    1 つめのクエリの名前を 2 つめのクエリの中で

    正しく記述出来ていないのは、命名規則以前の問題であるとは思います。

    そもそも、当初の投稿からここまでのやりとりにおいて、

    吉村博文さんご自身がオブジェクトやフィールドの名前の

    表記を統一されておらず、たびたび変更されておられます。

    ([アパートマスタテーブル]が[マンションマスタ]になっていたり、

     [入居日]が[入居年月日]になっていたりするなど)

    それがあなたご自身の何らかの都合によるものなのか、

    単語や用語や固有名詞の統一表記というものに対して無頓着なのか、

    単にキーボード入力が苦手なだけなのかは定かではありませんが

    (本題とは関係がないので理由や原因はどうでもいいですが)、

    「固有名詞の表記が統一されていない(揺れがある)」状況は、

    第三者に対して説明をする上で、正直望ましいものであるとは言えません。

    上記の例で言えば、[アパートマスタテーブル]と[マンションマスタ]は

    それぞれ別個のテーブルであるのか、それとも同一のテーブルを

    指しているのか、その判別や類推という作業を閲覧者に強いることに

    なります。

    人間相手ですらそういう困った状況になるのですから、

    Access というプログラム相手であれば、尚のこと

    「呼び出したいオブジェクトやフィールドの名前(識別子)は正しく記述すること」

    が求められます。

    それこそ、名前の記述をたった 1 文字間違えただけで

    (例えば _(アンダーバー)を -(ハイフン)と打ち間違えるだけで)、

    そのオブジェクト/フィールドを識別出来なくなるのが

    プログラムというものなのです。

    こちらと致しましては、そういったことを全て踏まえ、

    使用するテーブルの構成やそれぞれの定義内容、

    各レコードの扱いなどについてたびたび確認させていただいた上で

    > 1. [入居者マスタ]を元に以下のような選択クエリ

    >    (以下*[Q_現在入居者]**)を作成する。*

    と記述したわけですから、実際にその通りの名前をつけていただければ、

    とりあえず当初の目的は達成されるかと思います。

    そこから敢えて「適当につけた名前」になさりたい、

    ということであれば、その名前の読み換え/書き換えは

    ご自身の裁量によって行なっていただくしかありません。

    少なくとも、「実際に(適当に)つけたクエリの名前」が

    具体的にどのようなものであるかが明示されない限り、

    現時点ではこれ以上お答えのしようがありません。

    再々iのメール申し訳ございません。

    ご連絡忘れた事項がありましたのでご連絡いたします。

    1)同じ「入居者マスタ」の中に「社会人用契約更新日」8職業区分1)と「学生用契約更新日」(職業区分3)のフィールドをっ作成しとぃます。又「契約更新なしの方は職業区分5」(契約更新なしの方及びガレージ使用の方)としています。

    2)契約更新は2年毎(契約更新2年)の方、契約更新1年(毎年契約更新をする方、契約更新なしの方(契約更新なしで居続ける方の3パターンがあります。

    ややこしいことを申しまして申し訳ございません。よろしくお願い申し上げます。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2017-04-03T10:00:19+00:00

    > 1)周旋屋が入居者に契約更新の連絡は月に一回だと思います。

    >     周旋屋に聞いたことがないのではっきりしたことはわかりません。

    > 2)周旋屋が入居者にするのは3か月前に契約更新を書面で伝楽連絡するので、

    >    そうむづかしく考える必要はないと思います。

    通常は毎月の賃料(家賃)の支払い時期に合わせて

    各月の締日や通知日を決めるのではないかと思われますが、

    とりあえず「月末日締め」ということにしておけば

    問題はないのでしょうか。

    > 3)契約更新完了日は入居者テーブルです。

    その場合、「最後に契約更新を行なった(手続きが完了した)日」しか

    記録出来ない(それより前の契約更新完了日が上書きされてしまう)

    のではないかと思いますが、それについては今のところ

    特に問題視しなくてもよい、ということでしょうか。

    > 4)3か月前、2か月前、当月、と表示するようにお願申し上げます。

    「当月」というのは「次回の契約更新予定日の、1ヶ月前の日付」

    という意味でしょうか。

    > 契約更新を3か月前の表示といいますのは今年の三か月前です。

    「今年」とは、具体的に今年のいつのことをおっしゃっているのでしょうか。

    例えば各年度の末日( **** 年 3 月 31 日)でしょうか。

    ([職業区分]の値が 3(学生)である場合は

     **** 年 3 月 25 日になりそうな気がしますが)

    ちなみに、「ある日付の 3 ヶ月前の日付」を求める式については

    > DateAdd("m", -3, [次回契約更新予定日]) AS [次回契約更新通知予定日]

    という回答を既にさせていただいてはいるのですが。

    > 2)契約更新は入居者と周旋屋がその時の雰囲気で鬼面す決めますので

    >    入居者マスタに社会人用の契約更新日入力欄を入居日の横に作成いたします。

    >    学生用はすでに「学生用契約更新日」の欄を作成しています。

    「その時の雰囲気」……。

    > 1)同じ「入居者マスタ」の中に「社会人用契約更新日」8(職業区分1)と

    >    「学生用契約更新日」(職業区分3)のフィールドをっ作成しとぃますしています。

    >    又「契約更新なしの方は職業区分5」(契約更新なしの方及びガレージ使用の方)としています。

    [職業区分]の値が 1,3,5 のどれであるかによって

    次回更新予定日の算出方法が異なる、ということであれば、

    それは別個のフィールドとして定義するのではなく、

    クエリの中に 1 つの演算フィールドを設けて、

    その式の中で条件分岐させた方がよさそうに思います。

    > 2)契約更新は2年毎(契約更新2年)の方、

    >    契約更新1年(毎年契約更新をする方、

    >    契約更新なしの方(契約更新なしで居続ける方

    >    の3パターンがあります。

    それぞれの入居者が上記の 3 パターンのどれに該当するのかを

    どのようにして判断されているのでしょうか。

    例えば [職業区分]の値が 1 なら 2年毎に契約更新、

    [職業区分]の値が 3 なら 1年毎に契約更新、

    [職業区分]の値が 5 なら 契約更新なし(自動更新)

    というつもりでおっしゃっているのでしょうか。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2017-04-04T02:39:19+00:00

    > 1)周旋屋が入居者に契約更新の連絡は月に一回だと思います。

    >     周旋屋に聞いたことがないのではっきりしたことはわかりません。

    > 2)周旋屋が入居者にするのは3か月前に契約更新を書面で伝楽連絡するので、

    >    そうむづかしく考える必要はないと思います。

    通常は毎月の賃料(家賃)の支払い時期に合わせて

    各月の締日や通知日を決めるのではないかと思われますが、

    とりあえず「月末日締め」ということにしておけば

    問題はないのでしょうか。

    > 3)契約更新完了日は入居者テーブルです。

    その場合、「最後に契約更新を行なった(手続きが完了した)日」しか

    記録出来ない(それより前の契約更新完了日が上書きされてしまう)

    のではないかと思いますが、それについては今のところ

    特に問題視しなくてもよい、ということでしょうか。

    > 4)3か月前、2か月前、当月、と表示するようにお願申し上げます。

    「当月」というのは「次回の契約更新予定日の、1ヶ月前の日付」

    という意味でしょうか。

    > 契約更新を3か月前の表示といいますのは今年の三か月前です。

    「今年」とは、具体的に今年のいつのことをおっしゃっているのでしょうか。

    例えば各年度の末日( **** 年 3 月 31 日)でしょうか。

    ([職業区分]の値が 3(学生)である場合は

     **** 年 3 月 25 日になりそうな気がしますが)

    ちなみに、「ある日付の 3 ヶ月前の日付」を求める式については

    > DateAdd("m", -3, [次回契約更新予定日]) AS [次回契約更新通知予定日]

    という回答を既にさせていただいてはいるのですが。

    > 2)契約更新は入居者と周旋屋がその時の雰囲気で鬼面す決めますので

    >    入居者マスタに社会人用の契約更新日入力欄を入居日の横に作成いたします。

    >    学生用はすでに「学生用契約更新日」の欄を作成しています。

    「その時の雰囲気」……。

    > 1)同じ「入居者マスタ」の中に「社会人用契約更新日」8(職業区分1)と

    >    「学生用契約更新日」(職業区分3)のフィールドをっ作成しとぃますしています。

    >    又「契約更新なしの方は職業区分5」(契約更新なしの方及びガレージ使用の方)としています。

    [職業区分]の値が 1,3,5 のどれであるかによって

    次回更新予定日の算出方法が異なる、ということであれば、

    それは別個のフィールドとして定義するのではなく、

    クエリの中に 1 つの演算フィールドを設けて、

    その式の中で条件分岐させた方がよさそうに思います。

    > 2)契約更新は2年毎(契約更新2年)の方、

    >    契約更新1年(毎年契約更新をする方、

    >    契約更新なしの方(契約更新なしで居続ける方

    >    の3パターンがあります。

    それぞれの入居者が上記の 3 パターンのどれに該当するのかを

    どのようにして判断されているのでしょうか。

    例えば [職業区分]の値が 1 なら 2年毎に契約更新、

    [職業区分]の値が 3 なら 1年毎に契約更新、

    [職業区分]の値が 5 なら 契約更新なし(自動更新)

    というつもりでおっしゃっているのでしょうか。

    返信ありがとうございます。

    ご質問にすべてお答えできたかは疑問ですが

    お答えいたします。

    1)契約完了日は「入居者マスタ」に別の欄を設けて契約更新日を入力いたします。

    2)「次回の契約更新日の1か月の日付」という意味です。

    3)「今年」とは契約更新する年のことです。

    4)契約書に職業を記す欄があり学生ならば学校名(例えば京都大学)社会人ならば就職先(例えば京都市)と書きれています。無職ならば無職と記されています。

    5)契約書に契約更新のことが書かれています。(例えば「入居年月日」より2年後とか1年毎か契約更新なしと書きされています。

    4)、5)を見て就職入力欄に「1,3,5」を入力いたします。

    以上です。ご質問にすべてお答えできたかわかりませんが。よろしくお願い申し上げます。脳梗塞のため注意力が散漫になっておりますのでお許しください。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2017-04-06T08:27:07+00:00

    > 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];


    ※ テーブル/クエリ/フィールドの名前は、

      実際につけられた名前に適宜修正すること。

    ※ [職業区分]のデータ型については全く触れられていないが、

      ひとまず数値型であると仮定。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  5. Anonymous
    2017-04-06T10:36:32+00:00

    > 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];


    ※ テーブル/クエリ/フィールドの名前は、

      実際につけられた名前に適宜修正すること。

    ※ [職業区分]のデータ型については全く触れられていないが、

      ひとまず数値型であると仮定。

    返信ありがとうございます。

    早速、コピーをいたしまして上手く開けませんでした。

    [JOIN操作の構文エラーです。」というメッセージが出ます。

    どのようにしたらよいのでしょうか。ご教示よろしくお願い申し上げます。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません