ACCESSでSQLを使用する方法

ACCESSでSQLを使用する方法

ACCESSにはテーブルのレコードを抽出、更新、削除できるクエリという機能があります。

通常のデータベースはこうした操作をする際に、SQL文を使用します。
SQLを使用しなくても、クエリを簡単に使用できるのがACCESSの特徴ですが、場合によってはSQLを使った方が楽な場合もあります。

今回は、ACCESSでSQLを使用する方法をご紹介します。


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

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

SQLとは

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

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

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

SQLの基本構文

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

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

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

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


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

となります。

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


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

となります。

ACCESSでSQLを使用するシーン

ACCESSにはクエリという機能があり、自分でSQL文を書かなくてもSQL同等の操作が可能です。
そのため、ACCESSを使用する際にSQLの知識は必須ではありません。

ただし、VBAでレコードの追加・更新・削除を行う場合は、SQLが使用できると便利です。

VBAでテーブルのレコードに対して処理をする際は、ADOを使用するのが一般的です。
ADOについて詳しく知りたい方は以下の記事をご覧下さい。

ADOを使ったレコード操作

そして、ADOによるフォームのレコード操作の中でも、検索や抽出であればSQLは必要ありません。
Filterプロパティがありますので、こちらを使用して同じことが可能です。

SQLを使った方が便利なのはレコードの新規作成、更新、削除を行う場合です。
ACCESSのクエリでいうと、アクションクエリをVBA上で実行する場合ですね。

なぜこうした場合にSQLを使った方が便利かというと、ADOでの処理は常に1レコードずつしかできないからです。
複数のレコードに対して新規作成、更新、削除等の処理をしたい場合、どうしてもループ処理を作成して処理開始レコードと終了条件を特定して処理させる必要があります。

例えば、rst1というレコードセット(テーブル)から、顧客IDが1のレコードを抽出して、商品名を「テスト」に変える場合は以下の構文になります。


 Do Until rst1.EOF

    if rst1!顧客ID = 1 then
                
       rst1!商品名 = "テスト"

        
       rst1.Update


    End If

    rst1.MoveNext
                    
 Loop

コードを書けば当然できるのですが、ループ処理を書くのが面倒ですし、コードが長くなることで可読性が低くなります。

この処理がSQL文であれば、以下で済みます。


 DoCmd.RunSQL "UPDATE rst1 SET 商品名 = 'テスト' WHERE 顧客ID = 1;"

かなり簡素化できることがお分かりいただけると思います。

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

ACCESSのVBAでSQLのアクションクエリを使用する際は、DoCmdを使用して、以下の構文を利用します。

DoCmd.RunSQL SQL文

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

例えば、SQL_stringという変数を作成して、先にこの変数にSQL文を格納したうえで、


 DoCmd.RunSQL SQL_string

と記述して実行するのです。

クエリからSQL文を作成する方法

SQLは書き方が難しい、という方も大丈夫です。

ACCESSではクエリからSQL文を作成することが可能です。

クエリを作成し、表示メニューからSQLビューを選択します。

すると、作成したクエリからSQL文が自動的に作成されます。

これを使えば、自分でSQL文を書かなくても簡単にSQLを作成できます。

以上、ACCESSでSQLを使用する方法をご紹介しました。


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

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

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

サービス一覧

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