MS Access ルックアップフィールド

MS Access ルックアップフィールド
前回、パラメータクエリを調べた。
クエリのパラメータ部分に値を投入するのは、ダイアログボックスからでしかできないらしい。VBAマクロであれば、Parameterオブジェクトを使ってやればできなくもない。クエリデザイナやSQLビューでテーブルのある列の値をパラメータとして渡すことができないかとやってみたが、無理だった。
なんとかIDをパラメータで受け取って、なんとか名を返すクエリを作成しておいて、それを別のクエリから呼び出してやれば、面倒な結合作業をする必要がなくなるかな?
と思ったのであるが、パラメータクエリではできないようである。
しかし、Accessにはルックアップフィールドなるものがあり、これを使用すれば、なんとかマスタから、なんとかIDを検索して、なんとか名で表示する、ということが簡単にできるらしい。
やってみるとしよう。なんとかマスタだとわかりにくいので商品マスタにしよう。まずは、商品マスタテーブルを作成するのである。
作成した商品マスタテーブルにレコードを作成
Access商品マスタ.png
商品ID列が、主キーであり、オートナンバー型となっているところがミソ。
注文テーブルを作成
次に商品マスタの主キーである商品IDを参照する、注文テーブルを作成してみる。
注文ID列を主キー、オートナンバー型で作成。
注文日列を日付時刻型で作成。
商品列を「ルックアップウイザード」で作成。
Accessルックアップウイザードを起動.png
Accessルックアップフィールド1.png
Accessルックアップフィールド2.png
Accessルックアップフィールド3.png
Accessルックアップフィールド4.png
Accessルックアップフィールド5.png
Accessルックアップフィールド6.png
これで、商品列がルックアップフィールドになった。商品マスタテーブルを開いているとリレーションを設定する際にエラーになるので注意。
商品列の次に、個数列を作成して、注文テーブルが完成となった。
注文テーブルにレコードを作成してみる
データシートビューに変更して、レコードを作成してみる。
注文IDは自動採番なので、注文日から入力していく。
次は商品列。ここがルックアップフィールドになっている。
Access注文テーブルの商品列がルックアップフィールド.png
このように、プルダウンのリストが表示され、商品マスタの内容が表示されている。
ガムを選んで、個数に1を入れてみた。
Accessルックアップフィールドの商品を選択.png
あら簡単。
これならフォームを作成しなくても、かなりいい線で入力できちゃう。
商品IDを気にしなくてよいのがイイね。
商品マスタテーブルを開いてみると
商品マスタをデータシートビューで表示してみると、以下のようになった。
Access商品マスタテーブルに子レコードができる.png
商品「ガム」のレコードに子レコードが付く感じになっている。子レコードは、注文テーブルの内容だし。ここで入力も可能なようである。
ここまでできるのなら、単価*個数で金額の計算もやってみたいと思うでしょ。
できちゃうのですよ。Accessって"なにげ"にすごいのかも。
まずは、注文テーブルへの入力用のクエリを作成する。
注文テーブル入力用クエリを作成
作成タブに移動して、「クエリデザイン」ボタンをクリックしてクエリを作成する。
テーブルのリストが出てくるので、「商品マスタ」と「注文」のふたつを選択して「追加」する。Ctrlを押しながらクリックすれば、複数選択ができる。
ルックアップウイザードで、参照整合を付けたので、自動的に結合条件(リレーションシップ)が付いている。これは、便利。
フィールドに入力したい項目を列挙していく。
注文日、商品(ルックアップフィールド)、個数、金額(単価*個数で計算)。
このくらいでよいでしょう。
Access注文入力用クエリ.png
注文入力用クエリでレコードを作成
データシートビューに切り替える。
ビューの切り替えは、右下のステータスバーでやると操作しやすいかも。
Access注文入力用クエリをデータシートビューに切り替え.png
こんな感じになるので、後は入力すればよいだけ。
Access注文入力用クエリにデータを入力.png
金額の列は、計算しているので、入力はできない。個数を入力すると自動的に計算される。
すばらしい。

Access クエリ 徹底活用ガイド ~仕事の現場で即使える

Access クエリ 徹底活用ガイド ~仕事の現場で即使える

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2018/05/25
  • メディア: 大型本

投稿者プロフィール

asai
asai