PR

DLookup関数で別テーブルの値を取得する方法【Access初心者向け】

Access
スポンサーリンク
スポンサーリンク

こんにちは、なかぜんです!
今回は、Accessでよく使うDLookup関数について、初心者さん向けにわかりやすく解説していきます。

「別のテーブルにある情報を簡単に取り出したい!」そんなときに便利なのが、DLookup関数。
実務でもとっても役立つので、ぜひ一緒にマスターしましょう!

スポンサーリンク

そもそもDLookup関数って何?

DLookup関数とは、Accessの中で「指定したテーブルやクエリから、条件に一致する値を1つだけ取り出す」ための関数です。

イメージとしては、表の中から「この人の電話番号だけ知りたい!」みたいに、ピンポイントで1つだけ情報を取ってくる感じですね。

DLookup関数の基本構文

DLookup(フィールド名, テーブル名またはクエリ名, 条件)

それぞれの意味はこんな感じです。

  • フィールド名:取り出したい列(例:”電話番号”)
  • テーブル名またはクエリ名:探す対象(例:”T_顧客マスタ”)
  • 条件:どのデータを取るか決める条件(例:”顧客ID = 1″)

【実例】DLookupで別テーブルの値を取得してみよう!

例えば、フォームに顧客IDを入力したら、自動的にその人の電話番号を表示するケースを考えます。

フォームに設定するコード例

Private Sub 顧客ID_AfterUpdate()
    Me.電話番号 = DLookup("電話番号", "T_顧客マスタ", "顧客ID = " & Me.顧客ID)
End Sub

このコードの意味を簡単に説明します。

  • 顧客ID_AfterUpdate:顧客IDの入力が終わった直後に動くイベント
  • Me.電話番号:フォーム上の「電話番号」フィールドにセットする
  • DLookup関数:T_顧客マスタテーブルから、顧客IDが一致する電話番号を取り出している

フォーム画面イメージ

こんなふうに、入力した瞬間に別テーブルから値が取得できるので、作業効率もアップしますよ!

注意点・よくあるミス

  • 条件式の文字列に注意!
     文字型の場合、条件式にシングルクォート(’)が必要です。
  • Nullエラーに注意!
     対象データが存在しないとDLookupはNullを返します。Nz関数でカバーしましょう。

文字型条件の例

' 文字型の場合
DLookup("電話番号", "T_顧客マスタ", "顧客名 = '" & Me.顧客名 & "'")

Nz関数でNull対策する例

Me.電話番号 = Nz(DLookup("電話番号", "T_顧客マスタ", "顧客ID = " & Me.顧客ID), "")

エラーを防ぐためにも、Nz関数をセットで使う習慣をつけると安心ですね。

応用ポイント(中級者向け)

複数条件で絞り込む方法

DLookupの条件部分に、複数条件をつなげることもできます!

DLookup("在庫数", "T_商品マスタ", "商品ID = " & Me.商品ID & " AND 倉庫ID = " & Me.倉庫ID)

これなら「商品IDも倉庫IDも一致するデータ」を取り出せます。

クエリを対象にする応用テクニック

テーブルだけでなく、事前に作ったクエリ名をDLookup対象にすることもできます。
複雑な条件はクエリ側で作っておき、DLookupではシンプルに取得、という設計もおすすめですよ。

まとめ|DLookupを使ってAccessをもっと便利に!

今回は、DLookup関数を使って別テーブルの値を取り出す方法を紹介しました。

  • 別テーブルから簡単にデータ取得できる
  • フォームやクエリと組み合わせるととっても便利
  • Null対策や文字列条件に注意!

最初は慣れが必要ですが、一度使い方を覚えるとAccessの世界がぐっと広がります。
ぜひ今回の記事を参考に、実際に自分のフォームやクエリでも試してみてくださいね!