目次
各省庁で、個人情報をすべて参照したい
こんにちは。伊川(@naonaoke)です。
今回もオートルッククエリについて説明します。
MYナンバーの管轄は、総務省とします。
社会保険台帳の管轄は、社会保険庁とします。
住民台帳の管轄は、各地域の市役所、区役所とします。
問題提起
個人の住所と、保険証番号を調べるように言われました。
総務省のMYナンバー台帳には、MYナンバーと名前しか記載がありません。
Aさんはどうしたらいいだろうか?
データベースの原則
問題の場合、Aさんが、社会保険庁、各市役所、各区役所へ行って、調べる、入力するということは、
現実的ではありません。
Aさんが、やるべきこと、調べることは、たった1つです。
それは、一意のキーを探すことなのです。
一意のキーを見つけることができたら、
データベースの原則は、一度入力された言葉、2度と入力しない。
これが重要です。
複数のテーブルでオートルックアップクエリを設定する
リレーションの編集から、一対多のリレーションを設定します。
これは、高速の参照、オートルックアップクエリで紹介しました。
http://keiyu.xyz/2019/09/18/access%e3%81%ae%e5%9f%ba%e6%9c%ac%e6%8a%80%e3%80%80%e3%82%aa%e3%83%bc%e3%83%88%e3%83%ab%e3%83%83%e3%82%af%e3%82%a2%e3%83%83%e3%83%97%e3%82%af%e3%82%a8%e3%83%aa%e3%81%af%e8%b6%85%e4%be%bf%e5%88%a9/
今回は、1対1のリレーションを設定を維持しながら、一対多のリレーションを設定します。
もちろん設定は可能です。
オートルックアップクエリはテーブルの設定も重要
主キーを設定しないテーブルは意味がないと言いました。
しかし、オートルックアップクエリだけは例外です。
オートルックアップクエリを利用するために、あえて、主キーを設定しないのです。
上の図も、MT_入力には、主キーは設定されていません。
入力専用のクエリを作成する
オートルックアップクエリは、クエリというだけあって、クエリを作成しないと作動しません。
クエリを作成すると、1対1のリレーションの設定と、一対多のリレーションが、
すべて、設定されている状態です。
このままでは、思うように作動しません。
設定を少し変更します。
1対1のリレーションの設定を、クエリの設定画面で解除します。
リレーション(黒いヒモ)を選択して、右クリックをします。
上の図のように、【削除】をクリックします。
一対多のリレーションが完成しました。
クエリを設定する
MYナンバーだけは、主キーの設定がされていないデーブルから選択します。
それ以外は、主キーが設定されているテーブルから選択します。
これで完成です。
フォームで検索したい場合にはどうするか?
上の図のように、レコードセットを、Q_入力に変更します。
なぜなら、Q_入力にオートルックアップクエリが設定しているからです。
レコードの検索にコードを仕込む
検索ボックスに、MYナンバーを入力します。
検索が完了しました。
コードの比較
上の図の検索コードは、
DoCmd.ApplyFilter , “[MYナンバー] =” & Me![検索] & ” ”
上の図の検索コードは、
Me.[MYナンバー] = Me.[検索]
明らかにオートルックアップクエリを設定した場合のコードの方が、簡単に見えますよね。
まとめ
いかがでしたでしょうか?
オートルックアップクエリは便利だと感じていただけましたでしょうか?
上司から、無茶な命令が来たときは、必ず、一意のキーがあるのか、ないのかを確認しましょう。
それを怠ると、とんでもなく時間を浪費する場合があります。