Access必須関数「DCount関数とDLookup関数」

AccessではExcelと同じように関数が使えます。

それもExcelのようにセルにしか使えないというわけではなく、フォームやレポートに配置したテキストボックスにも設定できます。

例えば、注文請書があって、お客さんの電話番号を入れたら、そのお客さんの住所、氏名、電話番号、メールアドレスが自動的にセットされ、注文内容を入力すると注文データが登録される、といった仕組みで、自動的にセットされる部分が関数でできます。

Excelでは条件付き集計の関数として、COUNTIF関数、SUMIF関数があり、また、同じような動作をする関数がデータベース関数としてDCOUNT関数、DSUM関数があります。

また値を検索する関数としてVLOOKUP関数があります。

これらの関数をAccessでも使えたら便利ですよね。というより使わないとできないことも多いので、今回は、そのAccess版のDcount関数とDLookup関数について紹介します。

Dcount関数

Dcount関数は条件で数を数える関数です。

書式は次の通りです。

=DCount(数を数える項目名,テーブル/クエリ名,条件)

すべての引数は具体的な名称を入れるので「””」で囲みます。条件も条件全体を囲みます。

数を数える項目名は、「””」で囲んだ中に項目名を「[]」でDcount関数の場合はどの項目を数えても同じになるので「”*”」になります。Dcount関数は数を数えますが合計を求めるためのDSum関数もあります。この場合は第一引数は合計を求める項目名を指定します。

テーブル/クエリには、数を数えるテーブルかクエリを指定します。

条件には項目名と演算子と比較する値を入力します。項目名は「[]」で入力します。演算子は「=」や不等号、否定は「!=」「<>」のどちらでも使えます。また演算子には「Between」や「Like」といったものもあります。「Between」は数値や日付のある値の間、「Like」は文字列に対してワイルドカードを使う時に使います。もし、比較対象が数値ならそのままなのですが、文字の場合は比較対象の文字列を「”」で囲みます。条件全体も「””」で囲みます。条件は入力しないこともでき、その場合は全レコードが対象となります。

DCount関数はDSum関数と同じような引数の指定ができるので、ここではDCount関数に併せてDSum関数の実例も紹介します。

商品一覧のテーブルの件数を数える場合は次の計算式になります。

=DCount("*","商品一覧")

商品一覧のテーブルの価格の合計を求める場合は次の計算式になります。

=DSum("[価格]","商品一覧")

商品一覧のテーブルの商品種類が「スプーン」の件数を求める場合は次の計算式になります。

=DCount("*","商品一覧","[商品種類]='スプーン'")

商品一覧のテーブルの商品種類が「スプーン」の合計金額を求める場合は次の計算式になります。

=DSum("[金額]","商品一覧","[商品種類]='スプーン'")

商品一覧のテーブルの金額が5000以上の件数を求める場合は次の計算式になります。

=DCount("*","商品一覧","[金額]>5000")

商品一覧のテーブルの金額が5000以上10000以下の件数を求める場合は次の計算式になります。

=DCount("*","商品一覧","[金額] Between 5000 And 10000")

商品一覧のテーブルの入荷元が「鈴井」を含むのレコードの合計金額を求める場合は次の計算式になります。

=DSum("[金額]","商品一覧","[入荷元] Like '*鈴井*'")

商品一覧のテーブルの入荷元がフォーム入力のテキストボックス入荷元に入力されている内容を含むのレコードの合計金額を求める場合は次の計算式になります。

=DSum("[金額]","商品一覧","[入荷元] Like '*'&[Forms]![入力]![入荷元]&'*'")

商品一覧のテーブルの金額がフォーム入力のテキストボックス最低金額と最高金額に入力されている内容を含むのレコードの合計金額を求める場合は次の計算式になります。

=DSum("[金額]","商品一覧","[金額] Between [Forms]![入力]![最低金額] And [Forms]![入力]![最高金額])

Dlookup

DLookup関数はより使うかもしれません。テーブルやクエリにある該当の値を抜き出す関数なので、ExcelでいうVLookup関数で求めるようなところには使うことになるでしょう。

書式は次の通りです。

=DLookup(数を数える項目名,テーブル/クエリ名,条件)

DCount関数と全く同じ引数指定になります。DCount関数と違うのは、答えは1つのレコードだということです。条件には複数の値を検索出来てしまうワイルドカードや不等号、Between指定は極力しないほうがいいでしょう。条件に当てはまる思っていないほうのデータが出てくるかもしれません。条件を設定しないこともできますがその場合もどのデータが出てくるかはわかりません。Accessではキーを項目に設定したりインデックスとなる項目を設定したりできますが、そのような一意の値の項目を検索条件に使った方がよいでしょう。

商品一覧のテーブルの商品コードが9のレコードの商品名を求める場合は次の計算式になります。

=DLookup("[商品名]","商品一覧","[商品コード]=9")

商品一覧のテーブルの商品コードが入力フォームの商品コードテキストボックスに入力されている商品名を求める場合は次の計算式になります。

=DLookup("[商品名]","商品一覧","[商品コード]=[Forms]![入力]![商品コード]")

コメント

タイトルとURLをコピーしました