Application.DCount メソッド (Access)

DCount 関数を使用して、指定したレコードセット (ドメイン) 内にあるレコードの数を決定します。

構文

DCount (Expr,Domain, Criteria)

expressionApplication オブジェクトを 表す変数。

パラメーター

名前 必須 / オプション データ型 説明
Expr 必須 文字列型 (String) 対象となるデータが含まれているフィールドを表す式です。 テーブルまたはクエリのフィールドを表す文字列式、またはそのフィールドのデータを使用して計算を実行する式を指定できます。 expr では、テーブルのフィールド、フォームのコントロール、定数、または関数の名前を指定できます。 expr に関数が含まれている場合は、組み込み関数またはユーザー定義関数を使用できますが、別のドメイン集計関数や SQL 集計関数は使用できません。
ドメイン 必須 String ドメインを構成するレコードのセットを識別する文字列式。 パラメーターを必要としないクエリには、テーブル名またはクエリ名が指定できます。
Criteria 省略可能 バリアント型 (Variant) DCount 関数を実行するデータの範囲を制限するために使用される省略可能な文字列式。 たとえば、 criteria は多くの場合、SQL 式の WHERE 句と同じ役割を果たします (ただし WHERE という語は使用しません)。 条件を省略すると、DCount 関数はドメイン全体に対して expr を評価します。 条件に含まれるフィールドは、ドメイン内のフィールドである必要もあります。それ以外の場合、DCount 関数は Null を返します。

戻り値

バリアント型

注釈

たとえば、DCount 関数をモジュール内で使用して、[受注] テーブル内の特定の日の受注数を返すことができます。

この関数は、レコードの特定の値ではなく、定義域に含まれるレコードの総数を求めるときに使います。 引数 expr には、フィールドのデータを使った計算式を指定することもできますが、 DCount 関数で計算されるのは、レコードの総数だけです。 expr によって実行される計算の値は使用できません。

DCount 関数は、抽出条件を指定して関数を実行するデータ範囲を制限する必要があるときに、演算コントロールで使用します。 たとえば、愛知県に出荷する受注の数を表示するには、テキスト ボックスの "ControlSource/コントロールソース" プロパティに次の式を設定します。

=DCount("[OrderID]", "Orders", "[ShipRegion] = 'CA'")

制限を指定せずに ドメイン 内のすべてのレコードをカウントするだけの場合は、 Count 関数を使用します。 Count 関数は、クエリのレコード数を高速で計算できるように最適化されています。 クエリ式では、DCount 関数の代わりに Count 関数を使用し、必要に応じて抽出条件を指定して特定の制限を適用するようにします。

コード モジュール、マクロ、または演算コントロールで定義域に含まれるレコード数を計算する場合は DCount 関数を使ってください。

DCount 関数を使用して、フォームまたはレポートの基になっているレコード ソースにない特定のフィールドを含むレコードの数をカウントします。 たとえば、[商品] テーブルに基づくフォームの演算コントロールに、[受注] テーブルから計算された受注数を表示できます。

dCount 関数は、expr がアスタリスク (*) ワイルドカード文字でない限り、expr によって参照されるフィールドに Null 値を含むレコードをカウントしません。 ワイルドカード文字を使うと、DCount 関数は Null フィールドを持つレコードを含むすべてのレコードの総数を計算します。 次の例では、[受注] テーブルに含まれるレコードの総数を計算します。

intX = DCount("*", "Orders")

ドメインが主キーを持つテーブルの場合は、主キー フィールドに Null が存在しないため、expr を主キー フィールドに設定することで、レコードの合計数をカウントすることもできます。

引数 expr に複数のフィールドを指定する場合は、フィールド名を結合演算子のアンパサンド (&) または正符号 (+) で区切ります。 アンパサンドで区切ると、DCount 関数では、指定したフィールドのいずれかにデータが入っているレコードが数えられます。 正符号で区切ると、DCount 関数では、指定したどのフィールドにもデータが入っているレコードのみが数えられます。 次の例は、すべてのレコードでデータが入っている [得意先名] フィールドと、データが入っていないこともある [ファクシミリ] フィールドを指定してこれらの記号を使った場合です。

intW = DCount("[ShipName]", "Orders") 
intX = DCount("[ShipRegion]", "Orders") 
intY = DCount("[ShipName] + [ShipRegion]", "Orders") 
intZ = DCount("[ShipName] & [ShipRegion]", "Orders")

注:

文字列を連結する場合は、できる限りアンパサンド (&) を使ってください。 数値の足し算以外に正符号 (+) を使うのは、式に Null を追加するときを除いてできる限り避けてください。

次の関数は、指定した日付以降の指定した国または地域への受注の数を返します。 定義域は [受注] テーブルです。

Public Function OrdersCount(ByVal strCountry As String, _ 
                            ByVal dteShipDate As Date) As Integer 
 
    OrdersCount = DCount("[ShippedDate]", "Orders", _ 
                  "[ShipCountry] = '" & strCountry & _ 
                  "' AND [ShippedDate] > #" & dteShipDate & "#") 
End Function

次の例では、DCount 関数でさまざまな criteria の種類を使用する方法を示します。

    ' ***************************
    ' Typical Use
    ' Numerical values. Replace "number" with the number to use.
    variable = DCount("[FieldName]", "TableName", "[Criteria] = number")

    ' Strings.
    ' Numerical values. Replace "string" with the string to use.
    variable = DCount("[FieldName]", "TableName", "[Criteria]= 'string'")

    ' Dates. Replace "date" with the string to use.
    variable = DCount("[FieldName]", "TableName", "[Criteria]= #date#")
    ' ***************************

    ' ***************************
    ' Referring to a control on a form
    ' Numerical values
    variable = DCount("[FieldName]", "TableName", "[Criteria] = " & Forms!FormName!ControlName)

    ' Strings
    variable = DCount("[FieldName]", "TableName", "[Criteria] = '" & Forms!FormName!ControlName & "'")

    ' Dates
    variable = DCount("[FieldName]", "TableName", "[Criteria] = #" & Forms!FormName!ControlName & "#")
    ' ***************************

    ' ***************************
    ' Combinations
    ' Multiple types of criteria
    variable = DCount("[FieldName]", "TableName", "[Criteria1] = " & Forms![FormName]![Control1] _
             & " AND [Criteria2] = '" & Forms![FormName]![Control2] & "'" _
            & " AND [Criteria3] =#" & Forms![FormName]![Control3] & "#")
    
    ' Use two fields from a single record.
    variable = DCount("[LastName] & ', ' & [FirstName]", "tblPeople", "[PrimaryKey] = 7")
            
    ' Expressions
    variable = DCount("[Field1] + [Field2]", "tableName", "[PrimaryKey] = 7")
    
    ' Control Structures
    variable = DCount("IIf([LastName] Like 'Smith', 'True', 'False')", "tableName", "[PrimaryKey] = 7")
    ' ***************************

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。