| Microsoft Access Club >SampleFile >インデックス >このページ |
|
Visual Basic、マクロ (マクロ : 1 つまたは複数のアクションを自動的に実行させるための仕組み。マクロは Visual Basic for Applications プログラミング言語で記述します。)、クエリ式、またはフォームやレポートの演算コントロール (演算コントロール : 演算結果を表示するコントロール。フォーム、レポート、またはデータ アクセス ページで使用します。 演算結果は、式の値が変わるたびに再計算されます。)で使うことができます。 DLookup 関数を使うと、基になるレコード ソースにないフィールドの値をフォームやレポートに表示することができます。たとえば、演算コントロールで DLookup 関数を使って、[商品] テーブルにある [商品名] フィールドを、[受注明細] テーブルを基にするフォームに表示することができます。
DLookup(expr, domain, [criteria])
DLookup 関数の引数
解説DLookup 関数は、引数 criteria で指定した情報に基づいてフィールド値を 1 つ返します。引数 criteria は省略可能です。 criteria に適合するレコードがないときや、domain にレコードが含まれないときは、DLookup 関数は Null 値を返します。 抽出条件を満たすレコードが複数見つかった場合、DLookup
関数は最初のレコードのフィールド値を返します。DLookup
関数が固有のフィールド値を返すように抽出条件を指定してください。次の例では、主キー (主キー
:
テーブル内の各レコードを一意に識別する値を持つフィールド
(列)。主キーには Null
値を含めることができません。また、必ず一意のインデックスを持つ必要があります。主キーは、テーブルと他のテーブルの外部キーを関連付ける際に使用されます。)である
[社員コード] フィールドの値を DLookup
関数の抽出条件に使います。 Dim varX As Variant
varX = DLookup("[氏名]", "社員", "[社員コード] = 1")
DLookup 関数をマクロ、モジュール、クエリ式、または演算コントロールのいずれで使用する場合も、正確な結果を得るために引数 criteria を慎重に設定してください。 DLookup 関数を使って、クエリの [抽出条件] セル、クエリの演算フィールドの式、または更新クエリ (更新クエリ : 指定する抽出条件 (検索条件) に従ってレコードのセットを変更するアクション クエリ (SQL ステートメント) です。)の [レコードの更新] 行に抽出条件を指定できます。 フォームやレポートの演算コントロールの式で DLookup
関数を使うと、基になるレコード
ソースにないフィールドをフォームやレポートに表示することができます。たとえば、[受注明細]
テーブルを基にする[受注明細] フォームに、[商品コード]
フィールドを表示する [商品コード] というテキスト
ボックスがあるとします。[商品コード] の値に基づいて [商品]
テーブルから [商品名] を参照する場合は、別のテキスト
ボックスを作成し、その "ControlSource/コントロールソース"
プロパティに次の式を設定します。 =DLookup("[商品名]", "商品", "[商品コード] =" _
& Forms![受注明細]!商品コード)
ヒント
メモ domain のレコードを変更しても、保存されていない値は DLookup 関数の演算に反映されません。変更した値を使って計算する場合は、計算前に、[レコード] メニューの [レコードの保存] をクリックするか、フォーカスを別のレコードに移動するか、または Update メソッドを使って変更を保存する必要があります。
使用例次の例では、条件を満たすレコードの [得意先名]
フィールドの値を返します。定義域は [得意先]
テーブルです。[得意先コード] フィールドの値が 1
であるレコードだけが演算の対象になります。 Dim varX As Variant
varX = DLookup("[得意先名]", "得意先", "[得意先コード] = 1")
Dim varX As Variant
varX = DLookup("[得意先名]", "得意先", "[得意先コード] = " _
& Forms!得意先!得意先コード)
次の例では、変数
intSearch
を使って値を参照しています。 Dim intSearch As Integer
Dim varX As Variant
intSearch = 1
varX = DLookup("[得意先名]", "得意先","[得意先コード] = " & intSearch)
関連ページ |