PR

Access クエリでDLookUp関数を用いる方法

クエリ

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に示します。

図1 クエリにおけるDLookUp関数の設定方法

図2 DLookup関数による処理結果

このようにして、作成したクエリをデータシートビューで確認すると、「所在都道府県」フィールドに対象となる都道府県が表示されていることが分かります(この値は「T_所在地マスタ」の値と一致しています。)。また、マスタテーブルにデータがない場合はNullが結果として返されます。

DLookUp関数では、【criteria】の記載方法によって抽出できる値を色々と変えることができ、参照先のテーブルを自テーブルにして再帰的な処理をすることも可能なため、様々な場面で活用することができます。

まとめ

今回は、AccessクエリでDLookUp関数を用いる方法を紹介しました。DLookUp関数は使い方によって様々な処理を実現することができるため、まずは基本的な使い方を理解し、応用していただければ良いかと思います。

専門書では、VBAを用いるに際して必要な基礎的事項が網羅されていますので、これらとDLookUp関数を上手く組み合わせて効率的な処理ができるデータベースを設計されてはいかがでしょうか。

スポンサーリンク

Kindle Unlimitedにサインアップして無料体験に登録する
Kindle Unlimitedに登録すると、人気のシリーズ、ベストセラー、名作などに好きなだけアクセスして、シームレスなデジタル読書体験を実現できます。

コメント

タイトルとURLをコピーしました