指定されたレコードのセット (定義域) に含まれるフィールドの値を返します。Visual Basic、マクロ、クエリ式、またはフォームやレポートの演算コントロールで使うことができます。
DLookup 関数を使うと、基になるレコード ソースにないフィールドの値をフォームやレポートに表示することができます。たとえば、演算コントロールで DLookup 関数を使って、[商品] テーブルにある [商品名] フィールドを、[受注明細] テーブルを基にするフォームに表示することができます。
構文
DLookup(expr, domain[, criteria])
DLookup 関数には、次の引数があります。
| 引数 | 内容 |
|---|---|
| expr | 対象となるデータが含まれているフィールドを表す文字列式、またはフィールドの値の計算を表す式です。テーブルのフィールド名、フォームのコントロール、定数、組み込み関数、およびユーザー定義関数が指定できます。ただし、他の定義域集計関数や SQL 集計関数は指定できません。 |
| domain | 定義域を構成するレコードを指定する文字列式です。テーブル名またはクエリ名が指定できます。 |
| criteria | この引数は省略可能です。演算対象となるデータの範囲を指定する文字列式です。たとえば、SQL 式の WHERE 句を指定できます (語 WHERE は省略します)。引数 criteria を省略すると、定義域全体に対して expr が適用されます。 |
解説
DLookup 関数は、引数 criteria で指定した情報に基づいてフィールド値を 1 つ返します。引数 criteria は省略可能です。
criteria に適合するレコードがないときや、domain にレコードが含まれないときは、DLookup 関数は Null 値を返します。
抽出条件を満たすレコードが複数見つかった場合、DLookup 関数は最初のレコードのフィールド値を返します。DLookup 関数が固有のフィールド値を返すように抽出条件を指定してください。次の例では、主キーである [社員コード] フィールドの値を抽出条件に使います。
Dim varX As Variant varX = DLookup("氏名", "社員", "社員コード= 107")
DLookup 関数をマクロ、モジュール、クエリ式、または演算コントロールのいずれで使用する場合も、正確な結果を得るために引数 criteria を慎重に設定してください。
DLookup 関数を使って、クエリの [抽出条件] セル、クエリの演算フィールドの式、または更新クエリの [レコードの更新] 行に抽出条件を指定できます。
フォームやレポートの演算コントロールの式で DLookup 関数を使うと、基になるレコード ソースにないフィールドをフォームやレポートに表示することができます。たとえば、[受注明細] テーブルを基にする[受注明細] フォームに、[商品コード] フィールドを表示する [商品コード] というテキスト ボックスがあるとします。[商品コード]の値に基づいて [商品] テーブルから [商品名] を参照する場合は、別のテキスト ボックスを作成し、その "ControlSource/コントロールソース" プロパティに次の式を設定します。
=DLookup("[商品名]", "商品", "[商品コード] =" _ & Forms![受注明細]![商品コード])
ヒント
メモ domain のレコードを変更しても、保存されていない値は DLookup 関数の演算に反映されません。変更した値を使って計算する場合は、計算前に、[レコード] メニューの [レコードの保存] を選択するか、フォーカスを別のレコードに移動するか、または Update メソッドを使って変更を保存する必要があります。