特定のテーブル、クエリ、レコードセットのレコード数を、DCount関数を使
用してカウントする方法を説明します。
● 準備 ●
(1) 以下の構成で[商品マスタ]テーブルを作成します。
----------------------------------------
フィールド名 データ型
商品ID 整数型(主キー)
商品名 テキスト型
販売価格 通貨型
----------------------------------------
(2) テーブルに適当なデータを入力しておきます。下記を参考にして下さい。
(3) 新規標準モジュールを作成し、以下のプロシージャを記述して下さい。
● サンプル ●
Private Sub RecCount()
'■ 初期設定 ■
Dim iCnt As Integer 'レコード件数
'■ DCount関数でカウント ■
Debug.Print "【DCount関数でカウント】"
iCnt = DCount("商品ID", "商品マスタ")
Debug.Print "商品マスタのレコード件数は " & iCnt & "件 です"
'販売価格が500円以上のものを抽出
iCnt = DCount("商品ID", "商品マスタ", "販売価格 >= 500")
Debug.Print "販売価格500円以上の商品は " & iCnt & "件 です"
End Sub
● 動作確認 ●
上記サンプルプロシージャを実行し、以下の文がイミディエイトウィンドウ
に表示されていることを確認して下さい。
----------------------------------------
【DCount関数でカウント】
商品マスタのレコード件数は 11件 です
販売価格500円以上の商品は 3件 です
----------------------------------------
● 詳細 ●
・DCount関数
DCount関数の構文は以下の通りです。
------------------------------------------------------------------
DCount(式, 定義域 [,範囲])
※ 範囲は省略可
------------------------------------------------------------------
式 :対象となるデータが含まれるフィールドを表す文字列、変数を指
定します。テーブル/クエリのフィールド名、フォームのコントロー
ル、定数、関数が指定できます。
定義域 :レコードをカウントするテーブル名、クエリ名を指定します。
範囲 :データ範囲を指定する文字列式を指定します。SQL文のWhere句を
Whereを省略した形で指定します。
この引数を省略すると、定義域全体が集計対象になります。
サンプルプロシージャを見ても分かる通り、非常に簡単な構文です。しかし、
定義域集計関数(頭に「D」のつく関数)は実行速度が大変遅いのが弱点です。
DCount関数も、1つのプロシージャ内で何度も集計を行うとストレスを感じるよ
うになるでしょう。
ただ、フォームのコントロールのControlSouce/コントロールソースに直接記
述できる点は大きなメリットの1つでしょう。
|