Accessでは、蓄積されたデータに基づき別に用意したマスタテーブルの値を取得する場合に、DLookUp関数を活用することができます。
DLookUp関数は、様々な用途に適用できますが、ここではクエリでの使用方法について紹介します。
言葉だけでは分かりづらい部分もあるかと思いますので、サンプルデータを交えながら処理方法を見ていきましょう。
サンプルデータの準備
データを格納するためのテーブルとして「T_データ」テーブルを作成し、以下で示すフィールド名及びデータ型を設定します。
■「T_データ」テーブルの設定
フィールド名 | データ型 |
氏名 | 短いテキスト |
所在地 | 数値型 |
続いて、「T_データ」テーブルに格納する値を次のようにします。
■「T_データ」テーブルのサンプルデータ
氏名 | 所在地 |
鈴木 太郎 | 1 |
岡本 祐司 | 13 |
坂本 伸介 | 22 |
三浦 香 | 35 |
花菱 咲子 | 40 |
林 新平 | 42 |
次に、DLookUp関数から値を取得するためのマスタテーブルとして「T_所在地マスタ」テーブルを作成し、フィールド名/データ型を次のように作成します。
■「T_所在地マスタ」テーブルの設定
フィールド名 | データ型 |
都道府県コード | 数値型 |
都道府県 | 短いテキスト |
ここで、所在地マスタはJIS規格に基づいた都道府県コード表を使うこととし、そのうちの一部データをサンプルデータとして登録します。
■「T_所在地マスタ」テーブルのサンプルデータ
都道府県コード | 都道府県 |
1 | 北海道 |
13 | 東京都 |
22 | 静岡県 |
35 | 山口県 |
40 | 福岡県 |
以上で、サンプルデータの準備が整いました。次からは、クエリでDLookUp関数を使う方法を確認していきましょう。
クエリでDLookUp関数を設定する
まずは、クエリのデザインビューを開き「テーブルの表示」から「T_データ」テーブルを設定します。
【フィールド】項目には「氏名」フィールドだけを追加します。続いて、新しいフィールドに以下の式を入力します。
所在都道府県: DLookUp(“都道府県”, “T_所在地マスタ”, “都道府県コード =” & [所在地])
さて、上式では何を意味しているのでしょうか?
基本に立ち返ることは非常に重要なため、まず、DLookUp関数の基本式から確認していきます。
DLookup( expr, domain [, criteria] )
そして、DLookup関数には、次の引数があります。
引数 | 説明 |
expr | 必須項目で、値を返すフィールドを指定する。 |
domain | 必須項目で、レコードセットを識別する。テーブル名やクエリ名を記載する。 |
criteria | 省略可能。ここで指定された条件に基づき、exprの値を返す。省略した場合は、domain内のランダム値を返す。条件に合うデータがない場合はNullを返す。 |
つまり、先に作成したクエリ式では、「T_所在地マスタ」テーブルにおいて「都道府県コード」フィールドの値と、「T_データ」テーブルの「所在地」フィールドの値が一致するレコードの、「都道府県」フィールドの値を返す、ということを意味しています。
文章にして書き出すと分かりにくいと思いますが、実際にクエリで処理した結果を図1、2に示します。
このようにして、作成したクエリをデータシートビューで確認すると、「所在都道府県」フィールドに対象となる都道府県が表示されていることが分かります(この値は「T_所在地マスタ」の値と一致しています。)。また、マスタテーブルにデータがない場合はNullが結果として返されます。
DLookUp関数では、【criteria】の記載方法によって抽出できる値を色々と変えることができ、参照先のテーブルを自テーブルにして再帰的な処理をすることも可能なため、様々な場面で活用することができます。
まとめ
今回は、AccessクエリでDLookUp関数を用いる方法を紹介しました。DLookUp関数は使い方によって様々な処理を実現することができるため、まずは基本的な使い方を理解し、応用していただければ良いかと思います。
専門書では、VBAを用いるに際して必要な基礎的事項が網羅されていますので、これらとDLookUp関数を上手く組み合わせて効率的な処理ができるデータベースを設計されてはいかがでしょうか。
スポンサーリンク
コメント