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によるフォームのレコード操作の中でも、検索や抽出であれば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の操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。