Microsoft Access Club > Access一日一見 >このページ >次頁 <前項  サイト内検索


Count関数とDCount関数…



Count関数とDCount関数は、 指定されたレコードのセット (定義域) に含まれるレコードの数を返します。Visual Basic、マクロ、クエリ式、または演算コントロールで使うことができます。

たとえば、DCount 関数をモジュールに指定して、特定の日の受注数を [受注] テーブルから計算することができます。

基本構文

DCount(expr, domain, [criteria])

DCount 関数には、次の引数があります。

引数 内容
expr 対象となるデータが含まれているフィールドを表す文字列式、またはフィールドの値の計算を表す式です。
expr には、テーブルのフィールド名、フォームのコントロール、定数、組み込み関数、およびユーザー定義関数が指定できます。
ただし、ほかの定義域集計関数や SQL 集計関数を expr に指定することはできません。
domain 定義域を構成するレコードを指定する文字列式です。パラメータを必要としないクエリには、テーブル名またはクエリ名が指定できます。
criteria この引数は省略可能です。DCount 関数の演算対象となるデータの範囲を指定する文字列式です。
たとえば、criteria には SQL 式の WHERE 句を指定できます (語 WHERE は省略します)。
引数 criteria を省略すると、DCount 関数は定義域全体に対して expr を適用します。
criteria に含まれるフィールドが domain のフィールドでない場合、DCount 関数はNull 値を返します。

解説

この関数は、定義域に含まれるレコードの総数を計算するときに使います。

  • たとえば、特定の地域へ発送する商品の総数を計算することができます。
  • 引数 expr にフィールドのデータを使った計算式を指定することもできますが、DCount 関数はレコードの総数だけを計算します。
  • DCount 関数の結果は、レコードのデータの内容には影響されます。
  • データ範囲を制限して抽出条件を指定する必要があるような場合は、DCount 関数を使います。
  • たとえば、演算コントロールで愛知県に出荷する受注の数を表示するには、テキスト ボックスの ControlSource/コントロールソース プロパティに次のように設定します。

=DCount("[受注コード]", "受注", "[出荷先都道府県]= '愛知県'")  

domain のすべてのレコード数を計算する場合は、Count 関数を使います。

留意事項

  • Count 関数は、クエリのレコード数を高速で計算できるように最適化されています。
  • クエリ式では DCount 関数の代わりに Count 関数を使って、特定の結果が返るように抽出条件を指定してください。
  • コード モジュール、マクロ、または演算コントロールで定義域のレコード数を計算する場合は DCount 関数を使ってください。
  • DCount 関数を使うと、基になるレコード ソースにないフィールドのレコード数をフォームやレポートに表示することができます。たとえば、[商品] テーブルに基づくフォームの演算コントロールに、[受注] テーブルから計算された受注数を表示できます。
  • expr がワイルドカード文字 (*) でない限り、expr で参照されるフィールドに Null 値が入ったレコードは DCount 関数の計算対象になりません。
  • ワイルドカード文字を使うと、DCount 関数は Null フィールドを持つレコードを含むすべてのレコードの総数を計算します。

次の例では、[受注] テーブルに含まれるレコードの総数を計算します。

intX = DCount("*", "受注")   

domain にインデックスが付いている場合は、expr に主キーを指定してレコードの総数を計算することができます。主キーが Null 値になることはないためです。

  • 引数 expr に複数のフィールドを指定する場合は、フィールド名を結合演算子のアンパサンド (&) またはプラス記号 (+) で区切ります。
  • アンパサンドで区切ると、DCount 関数では、指定したフィールドのいずれかにデータが入っているレコードが数えられます。
  • プラス記号で区切ると、DCount 関数では、指定したどのフィールドにもデータが入っているレコードのみが数えられます。

次の例は、すべてのレコードでデータが入っている [得意先名] フィールドと、データが入っていないこともある [ファクシミリ] フィールドを指定してこれらの記号を使った場合です。

  • intW = DCount("[得意先名]", "得意先")
  • intX = DCount("[ファクシミリ]", "得意先")
  • intY = DCount("[得意先名] + [ファクシミリ]", "得意先")
  • intZ = DCount("[得意先名] & [ファクシミリ]", "得意先")

メモ

  • 文字列を連結する場合は、できる限りアンパサンド (&) を使ってください。
  • 数値の足し算以外にプラス記号 (+) を使うのは、式に Null 値を追加するときを除いてできる限り避けてください。
  • domain のレコードを変更しても、保存されていない値は DCount 関数 の演算に反映されません。
  • 変更した値を使って計算する場合は、計算前に、[レコード] メニューの [レコードの保存] を選択するか、フォーカスを別のレコードに移動するか、または Update メソッドを使って変更を保存する必要があります。

使用例

次の例では、指定した日付以降の特定の出荷先への受注の数が返されます。定義域は [受注] テーブルです。

Function OrdersCount(ByVal strCountry As String, _
                                    ByVal dteShipDate As Date) As Integer
    OrdersCount = DCount("[出荷日]", "受注", "[出荷先都道府県] ='" & _
                        strCountry & "' AND [出荷日] > #" & dteShipDate & "#")
End Function

※Accessヘルプから引用しています。

2003/02/03

 

ページの先頭へ 前ページへ戻る


Count関数とDCount関数…


-Microsoft Access Club-

動画配信(ダウンロード、ストリーミング)対応の専用レンタルサーバー。データセンター設置場所はアメリカ合衆国です。: 動画サーバードットコム
動画配信(ダウンロード、ストリーミング)対応の専用レンタルサーバー。
データセンター設置場所はアメリカ合衆国です。
100Mbps〜1Gbpsまで対応できます。