これまでに、ADO(ActiveX Data Objects)を用いたレコード操作の方法を紹介してきました。
上記の記事では、テーブルの情報を取得してイミディエイトウィンドウに結果を表示する方法を紹介しましたが、それ以上に、ADOではレコードを追加する際に強みが発揮されます。
ADOでは、フィールドを指定して処理をすることができるので、視覚的に処理内容を把握しやすく、またフィールド単位での処理が容易にできる点も強みです。
ADOの処理方法を取得すれば、Accessのデータ処理で怖いものはなくなるかと思いますので、皆様にもその有効性を知っていただくためにも、今回は、ADOを用いたレコードの追加方法を紹介していきます。
サンプルテーブルについて
まず、サンプルテーブルの構造は表1に示すとおりとします。
表1 サンプルテーブルの構造
フィールド名 | データ型 |
ID | オートナンバー型 |
氏名 | 短いテキスト |
年齢 | 数値型 |
日付 | 日付/時刻型 |
ここでは、良く使うデータ型を用いて設定方法を紹介できるようにしました。
次に、サンプルデータは表2のようにしました。
表2 サンプルデータについて
ID | 氏名 | 年齢 | 日付 |
1 | 鈴木 太郎 | 24 | 2020/07/20 |
2 | 佐藤 次郎 | 39 | 2020/07/21 |
3 | 高橋 花子 | 42 | 2020/09/21 |
4 | 山田 一郎 | 33 | 2020/09/21 |
ADOによるレコード追加処理について
まずは、標準モジュールに「Data_Add」サブプロシージャを追加し、以下に示すようにコードを作成します。
Public Sub Data_Add() Dim cn As New ADODB.Connection 'データベース接続用変数の設定 Dim rs As New ADODB.Recordset 'レコードセット用変数 '自データベースの接続設定 Set cn = CurrentProject.Connection 'サンプルテーブルを開く rs.Open "サンプルテーブル", cn, adOpenKeyset, adLockOptimistic 'レコードを追加する。 rs.AddNew '各フィールドに値を追加する。 rs!氏名 = "井上 銀二" rs!年齢 = 50 rs!日付 = #3/27/2021# 'レコードを更新して値追加を完了させる。 rs.Update 'テーブルを閉じる rs.Close 'データベースの接続を解除する。 cn.Close: Set cn = Nothing End Sub
それでは、上記のコードについて、一つずつ確認をしていきましょう。
最初の処理は、ADOによるデータベース接続をするための変数宣言を行い、自データベースへの接続を行います。
次に、今回作成した「サンプルテーブル」へアクセスをします。アクセス方法については、先に紹介した記事をご参考にしてください。
これで、「サンプルテーブル」への接続ができ、「rs.AddNew」によりレコードセットを追加します。(この状態では空のレコードセットが出来上がりますが、「ID」フィールドはオートナンバー型のため自動で番号が付番されます。)
続いて、「rs!○○○ ※○○○はフィールド名」として明示的に値を追加するフィールド名を設定します。このとき注意が必要な点として、フィールド名を設定する場合は、「rs.」のようにピリオドを用いるのではなく、「rs!」とエクスクラメーションマークを用います。ピリオドはオブジェクトのプロパティを指定する際に用いますので、ご注意ください。
「rs!○○○ =」のように「=」を用いて、左辺に右辺の値を入れ込んでいきますが、ここではサンプルテーブルの各フィールドに、上記コードで示した各値を追加していきます。
ここで、追加する値はテキスト型、数値型、日付/時刻型と様々なデータ型を用意してみましたので、それぞれの記載方法を確認していきましょう。
まず、テキスト型の場合は、「”井上 銀二”」のようにダブルクオーテーションで文字列を括っています。数値型の場合は「50」と、ダブルクォーテーションで括ることなく、値をそのまま記載しています。また、日付/時刻型の場合は「#3/27/2021#」とシャープマークで値を括っています。
各フィールドへの登録手続きが終わった後(この段階でデータの登録は確定していません。)、「rs.Update」により各フィールドへの値の登録を確定させます。
「rs.Update」の記述を忘れるとデータ登録がコミットされませんのでご注意ください。
最後に、テーブルを閉じ、データベース接続を切ることで、一通りの処理が完了します。
ADOによるレコード追加の確認
それでは、「サンプルテーブル」に値が反映されることを確認しましょう。
まずは、サンプルテーブル中のレコードが図1になっていることを確認します。そして、VBA画面に戻り、「Data_Add」サブプロシージャが選択された状態で画面上の「▶」を1回だけクリックします(図2参照)。
これで、ADOによるレコード追加が行われます。(見た目上は何も変わっていないように思われますが、処理は終わっていますので、「▶」を何回もクリックしないように気を付けてください。)
再度、サンプルテーブルを開くと図3に示すように、「井上 銀二」のレコードが追加されていることが分かります。
まとめ
今回はADOによるレコード追加方法を紹介しました。サンプルコードでは直接、値を記載しましたが、別のテーブルの値を取得することもできますし、Excel等外部データから情報を取得することもでき、汎用性が広い方法ですので、この機会にぜひ使い方をマスターしていただければと思います。
スポンサーリンク
またご参考として、DAOを用いたレコード追加方法については以下の記事をご確認ください。
コメント