ACCESS VBAでSELECT文によるSQLを実行する方法

VBAでSELECT文によるSQLを実行する方法

ACCESSでは、レコードを抽出する際にクエリという機能を利用することが可能です。

クエリはGUIで利用できるため便利ですが、SQLに慣れた方は、直接SQL文を書きたいという場合もあるでしょう。

今回は、ACCESS VBAでSELECT文によるSQLを実行する方法をご紹介します。


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

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

SQLとは

まず、SQLとは何かについてご説明しましょう。

SQLとはデータベースを操作するための言語です。
レコードの新規作成、更新、抽出、削除、グループ化など様々な操作ができます。

Microsoft SQL ServerやOracleなど、多くのデータベースソフトウェアでもサポートされており、グローバルで一般的なデータベース操作言語と言えます。

ACCESSはSQLを理解していなくても利用できるデータベースソフトですが、SQLを使用することも可能です。

SQLの基本構文

SQLでレコードを抽出する際は、以下の構文で利用します。

SELECT フィールド名 FROM テーブル名 WHERE 抽出条件 ;

これがSQLで最もよく利用されるSELECT文です。

それぞれ、SELECT句、FROM句、WHERE句と呼ばれますが、この設定で基本操作はできます。
最後に「;」を付けるのを忘れないようにしてください。

例えば、売上テーブルから顧客IDが1のレコードの商品名を抽出する際は、


 SELECT 商品名 FROM 売上テーブル WHERE 顧客ID = 1 ;

となります。

よく利用されるのは、フィールドを指定せず全て抜き出す場合です。
先の例ですと、この場合はSELECT句に「*」を使用して、


 SELECT * FROM 売上テーブル WHERE 顧客ID = 1 ; 

となります。

上記のSQLを実行すると、売上テーブルから顧客IDが1のレコードのすべてのフィールドを抽出します。

ACCESS VBAでSQLを使用する際の構文

ACCESSのVBAでSQLのアクションクエリを使用する際は、DoCmd.RunSQLメソッドを使用して、以下の構文で記述します。

DoCmd.RunSQL SQL文

SQL文の部分は可変になることも多いので、変数を使ってVBAでSQL文を作成する構成をよく見かけます。

例えば、以下のようなプロシージャの記載です。

 
    Dim sql_txt As String
    
    sql_txt = "SELECT 商品名 FROM 売上テーブル WHERE 顧客ID = 1;"
    
    DoCmd.RunSQL sql_txt

上記のプロシージャでは、sql_txtという文字列型の変数を定義し、その変数にSQLのSELECT文を格納したうえで、DoCmd.RunSQLメソッドで実行しています。

以上、VBAでSELECT文によるSQLを実行する方法をご紹介しました。


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

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

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

サービス一覧

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