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 関数が実行されるデータの範囲を制限するために使用される文字列式。 たとえば、 多くの場合、 条件は、WHERE という単語を含SQL式の WHERE 句に相当します。 条件 省略すると 、DMin 関数と DMax 関数はドメイン全体に対して expr を評価します。 条件に含まれるフィールドもドメイン内のフィールドである必要があります。それ以外の場合、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 のスキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

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

×