ACCESS VBA INSERTでレコードを追加する方法
ACCESSのデータはテーブルに保存されます。
テーブルへのデータ入力は、主に入力用フォームから行うことが多いのですが、VBAのプログラミング上でレコードを追加したいときもあります。
その際に利用するのがINSERT INTO構文です。
今回は、ACCESS VBAでINSERTを使ってレコードを追加する方法をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。
INSERT INTO構文
VBAでテーブルにレコードを追加するには、SQLのINSERT INTO構文を利用します。
以下の構文です。
INSERT INTO テーブル名 ( フィールド名1 , フィールド名2 , フィールド名3 ) VALUES ( 値1 , 値2 , 値3 ) ;
引数にテーブル名を指定したうえで、フィールド名とそれぞれのフィールドに入力する値(VALUES)を指定していきます。
VBAでの利用方法
では実際にINSERT INTO構文をVBAで利用する方法をご紹介します。
サンプルテーブルとして以下のMST_顧客を用意しました。
こちらに、VBAでレコードを追加していきます。
まずはVisual Basic Editorを起動します。「ALT」+F11キーです。
そこで下記のプロシージャを記述します。
今回は他のイベントプロシージャから呼び出しができるように、Publicプロシージャとして作成しました。
Public Sub kokyaku_tuika()
DoCmd.RunSQL "insert into MST_顧客 (登録日,顧客名,住所1) values (#2022/7/16#,'テスト顧客','東京都');"
End Sub
これが、VBAでINSERTを行うための記述です。
いくつかポイントをご説明します。
DoCmd.RunSQL
VBAでSQLを使用する際は、DoCmd.RunSQLメソッドを利用します。
DoCmd.RunSQLに続いて、SQL文を記載します。
この際、SQL文はテキスト型として扱うために「”」(ダブルクォーテーション)で囲むことを忘れないようにしてください。
今回も、DoCmd.RunSQLの直後と最後に「”」がついていることがわかると思います。
フィールド名の指定
フィールド名を指定する際は登録日,顧客名,住所1 のように、単純にフィールド名を列記します。
ここは「”」で囲う必要はありません。
値の指定
一方で値を指定する際は、それぞれのデータ型に合わせた指定が必要です。
日付型であれば「#」で囲います。
テキスト型であれば「”」で囲います。
ただし、上記の構文ではSQL文自体をテキスト型として認識させるために、一番外側で「”」を使用しておりますので、「”」内でさらにテキスト型指定をするために「’」を使っています。’テスト顧客’、’東京都’などの記述がこの例です。
このあたりに注意すれば、INSERTをうまく使えると思います。
作成したプロシージャを実行した結果がこちらです。
一番下にレコードが指定通りに追加されていることが分かると思います。
以上、INSERTでレコードを追加する方法をご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。