ACCESS VBA テーブルの値を取得する方法

テーブルの値を取得する方法

ACCESS VBAでは、テーブルから値を取得するケースが多く発生します。

特定のレコードを指定して取得する方法や、集計して取得するなど、自由にテーブルの値を取得できる方法をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。

サンプルテーブル

VBAでのテーブルの値の取得をご説明するにあたり、今回は下記のサンプルテーブルを準備しました。
売上情報が格納されたテーブルで、名前は「TRN_売上」とします。

VBAからテーブルの値を取得する方法

まず、VBAからテーブルの値を取得する方法には何があるか見ていきましょう。

今回は下記の5つの方法をご紹介します。

1.テーブル内の特定レコードの特定フィールドの値を取得する
2.テーブル内の特定フィールドのレコード数を計算する
3.テーブル内の特定フィールドの値を合計する
4.テーブル内の特定フィールドの最大値、最小値を取得する
5.テーブル内の特定フィールドの平均値を取得する

テーブル内の特定レコードの特定フィールドの値を取得する

まずは最もよく使われる、テーブル内の特定レコードの特定フィールドの値を取得する方法を見ていきましょう。

ここでは、DLookup関数を使用して、自分が取得したデータを取得します。
DLookup関数は以下の構文で使用します。

DLookup ( 値を返すフィールド , テーブル , 抽出条件 )

例えば、サンプルテーブル「TRN_売上」で売上IDが8のレコードの顧客IDを取得する場合を見てみましょう。
下記のように記述します。


DLookup("顧客ID", "TRN_売上", "売上ID=8")

最初の引数は値を返すフィールドとして「顧客ID」を指定し、2つ目の引数は対象のテーブルである「TRN_売上」を指定しました。最後の引数はレコードの特定方法として「売上ID=8」と記載しています。

最後の引数は今回は「8」と定数で指定しましたが、VBAで使用する際はここに変数を利用したり、フォームの値を参照させて動的に参照するレコードを変更させることが一般的です。

以下の記事ではDLookup関数の使用方法についてさらに詳しく記載しておりますのでご興味のある方はご覧ください。

ACCESS DLookup関数を使ってテーブルの値を参照する方法

テーブル内の特定フィールドのレコード数を計算する

続いて、テーブルの特定フィールドのレコード数を計算する方法です。

この場合、DCount関数を使用します。
DCount関数は以下の構文で使用します。

DCount ( カウントするフィールド , テーブル , 抽出条件 )

例えば、サンプルテーブル「TRN_売上」で顧客IDが13のレコード数を取得する場合を見てみましょう。
下記のように記述します。


DCount("売上ID", "TRN_売上", "顧客ID=13")

最初の引数はカウントするフィールドとして「売上ID」を指定しました。カウントの対象はどのフィールドでも構いませんが、必ず値が入っているフィールドを選択するためには、主キーフィールドを選択しておけば間違いがないでしょう。

2つ目の引数は対象のテーブルである「TRN_売上」を指定しました。最後の引数はレコードの特定方法として「顧客ID=13」と記載しています。

以下の記事ではDCount関数の使用方法についてさらに詳しく記載しておりますのでご興味のある方はご覧ください。

テーブル内の特定フィールドの値を合計する

3つ目はテーブル内の特定フィールドの値を合計する方法です。

使用するのはDSum関数で、以下の構文を用います。

DSum ( 合計するフィールド , テーブル , 抽出条件 )

サンプルテーブル「TRN_売上」で顧客IDが13のレコードの伝票合計の合計を取得する場合を見てみましょう。
下記のように記述します。


DSum("伝票合計", "TRN_売上", "顧客ID=13")

最初の引数は合計するフィールドとして「伝票合計」を指定しました。2つ目の引数は対象のテーブルである「TRN_売上」を指定しました。最後の引数はレコードの特定方法として「顧客ID=13」と記載しています。

テーブル内の特定フィールドの最大値、最小値を取得する

続いて、テーブル内の特定フィールドの最大値、最小値を取得する方法です。

使用するのはDMax、Dmin関数で、以下の構文を用います。

DMax ( 値を返すフィールド , テーブル , 抽出条件 )

DMin ( 値を返すフィールド , テーブル , 抽出条件 )

Dmaxは最大値を返し、Dminは最小値を返します。

サンプルテーブル「TRN_売上」で顧客IDが13のレコードの伝票合計の最大値と最小値を取得する場合を見てみましょう。
下記のように記述します。


DMax("伝票合計", "TRN_売上", "顧客ID=13")

DMin("伝票合計", "TRN_売上", "顧客ID=13")

最初の引数は最大値・最小値を返すフィールドとして「伝票合計」を指定しました。2つ目の引数は対象のテーブルである「TRN_売上」を指定しました。最後の引数はレコードの特定方法として「顧客ID=13」と記載しています。

テーブル内の特定フィールドの平均値を取得する

最後はテーブル内の特定フィールドの平均値を取得する方法です。

使用するのはDAvg関数で、以下の構文を用います。

DAvg ( 平均値を返すフィールド , テーブル , 抽出条件 )

サンプルテーブル「TRN_売上」で顧客IDが13のレコードの伝票合計の平均値を取得する場合を見てみましょう。
下記のように記述します。


DDAvg("伝票合計", "TRN_売上", "顧客ID=13")

最初の引数は平均値を返すフィールドとして「伝票合計」を指定しました。2つ目の引数は対象のテーブルである「TRN_売上」を指定しました。最後の引数はレコードの特定方法として「顧客ID=13」と記載しています。

以上、テーブルの値を取得する方法をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。