DMin、DMax 関数

DMin 関数と DMax 関数を使用すると、指定されたレコード セット (ドメイン) の最小値と最大値を確認できます。DMin 関数と DMax 関数は、Visual Basic for Applications (VBA) モジュール、マクロ、クエリ式、または演算コントロールで使用します。

たとえば、レポートの演算コントロールで DMin 関数と DMax 関数を使用して、各顧客の最小値と最大値の注文金額を表示できます。また、クエリ式で DMin 関数を使用して、最小割引額よりも大きな割引額の注文をすべて表示することもできます。

構文

DMin ( expr , domain [, criteria] )

DMax ( expr , domain [, criteria] )

DMin 関数と DMax 関数には次の引数があります。

引数

説明

expr

必須。最小値または最大値を検索するフィールドを特定する式。テーブルやクエリ内のフィールドを示す文字列式、または対象フィールド内のデータに対して計算を実行する式を指定できます。expr では、テーブル内のフィールド、フォームのコントロール、定数、または関数の名前を指定できます。expr で関数を指定する場合、その関数は組み込みでもユーザー定義でもかまいませんが、別のドメインの集計関数または SQL 集計関数は使えません。

domain

必須。 定義域を構成するレコード セットを識別する文字列式。 テーブル名の場合もあれば、パラメーターを必要としないクエリのクエリ名の場合もあります。

criteria

省略可能。DMin または DMax 関数の実行対象となるデータ範囲を制限する文字列式です。たとえば、criteria は多くの場合、WHERE という語句がないだけで、SQL 式の WHERE 句と同等です。criteria を省略した場合、DMin および DMax 関数は、定義域全体に対して expr を評価します。criteria に含めるすべてのフィールドは、domain 内のフィールドであることも必要です。そうでない場合、DMin および DMax 関数は Null を返します。


解説

DMin 関数と DMax 関数は、criteria を満たす最小値と最大値を返します。expr が数値を識別する場合、DMin 関数と DMax 関数は数値を返します。expr が文字列データを識別する場合、アルファベット順で最初または最後の文字列を返します。

expr で参照されるフィールドの Null 値は、DMin 関数と DMax 関数で無視されます。ただし、criteria を満たしているレコードがない場合、または domain にレコードが含まれていない場合、DMin 関数と DMax 関数は Null を返します。

マクロ、モジュール、クエリ式、または演算コントロールのいずれで DMin または DMax 関数を使っても、正しく評価されるように criteria 引数を慎重に構築する必要があります。

DMin 関数と DMax 関数を使用して、クエリ内の [条件] 行、クエリ式の集計フィールド、または 更新クエリ の [更新対象] 行で条件を指定できます。

注: DMin 関数と DMax 関数を使用するか、Min 関数と Max 関数は、集計クエリの計算フィールド式で使用できます。DMin 関数または DMax 関数を使用する場合、値が評価されてから、データがグループ化されます。Min 関数または Max 関数を使用する場合、データがグループ化されてから、フィールド式の値が評価されます。

抽出条件を特定する必要があるときは、演算コントロールの DMin 関数または DMax 関数を使用して、関数が実行されるデータ範囲を制限します。たとえば、カリフォルニアに出荷される配送コストの最高値を表示するには、テキスト ボックスの ControlSource プロパティに次の式を設定します。

=DMax("[Freight]", "Orders", "[ShipRegion] = 'CA'")

domain のすべてのレコードの最小値または最大値を検索するだけの場合は、Min 関数または Max 関数を使用します。

表示する必要があるフィールドが、基となるフォームのレコード ソースにない場合は、モジュールやマクロ、フォームの演算コントロールの DMin 関数または DMax 関数を使用できます。

ヒント

DMin 関数または DMax 関数を使用して外部テーブルのフィールドの最小値または最大値を検索することはできますが、両方のテーブルから値を抽出する必要があるフィールドを含むクエリを作成してから、そのクエリに基づいてフォームやレポートを作成する方が効率的な場合があります。

注: これらの関数では、domain 内のレコードに対する保存されていない変更は、計算に含まれません。変更した値に基づいて DMax 関数または DMin 関数を実行する場合は、[データ] タブの [レコード] にある [レコードの保存] をクリックするか、別のレコードにフォーカスを移動するか、または Update メソッドを使って、最初に変更を保存する必要があります。

注: 次の例は、Visual Basic for Applications (VBA) モジュールでのこの関数の使用方法を示しています。 VBA の使用方法の詳細については、[検索] の横にあるドロップダウン リストで [開発者用リファレンス] を選び、検索ボックスに検索する用語を入力します。

次の例では、英国に出荷される注文に対し、"船荷" フィールドの値の最小値と最高値を返します。定義域は Orders テーブルです。criteria 引数により、生成されるレコード セットは、ShipCountryRegion が UK のレコードに制限されます。

Dim curX As Currency
Dim curY As Currency
curX = DMin("[Freight]", "Orders", _
"[ShipCountryRegion] = 'UK'")
curY = DMax("[Freight]", "Orders", _
"[ShipCountryRegion] = 'UK'")

次の例で、criteria 引数には、OrderDate というテキスト ボックスの現在の値が含まれています。テキスト ボックスは、Orders テーブルの OrderDate フィールドにバインドされています。コントロールへの参照は、文字列を表す二重引用符 (") で囲まれていないことに注意してください。こうすることで DMax 関数が呼び出される度に、Microsoft Office Access 2007 はコントロールから現在の値を取得します。

Dim curX As Currency
curX = DMax("[Freight]", "Orders", "[OrderDate] = #" _
& Forms!Orders!OrderDate & "#")

次の例では、抽出条件式に変数 dteOrderDate が含まれています。番号記号 (#) は文字列式に含まれているので、文字列が連結されるときは、日付を囲みます。

Dim dteOrderDate As Date
Dim curX As Currency
dteOrderDate = #03/30/2000#
curX = DMin("[Freight]", "Orders", _
"[OrderDate] = #" & dteOrderDate & "#")
スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×