たま氏の覚え書き

KNIME・AccessVBA・Swift等、学習したことを覚え書き

AccessVBA_ADOの利用_レコード操作その4【Recordset】【AddNew】レコードの追加

ADOでデータベースに接続し、Recordsetを使用してレコードを追加する記述

今回の記述に関する前情報

何を行うか

Recordsetで、指定のテーブルにレコードを追加
パターン1:カレントプロジェクトの指定のテーブルの値を更新
パターン2:別のAccessファイルの指定のテーブルの値を更新

記述例における利用パーツ

・メソッド
  →AddNew / Update / Open / Close

注意点

存在している全てのフィールド分、記述しないと結果は反映されない
深夜だから頭おかしくなっているのか、いっかい閉じないと更新されないな…きのせい?

【実践】指定のテーブルの指定のフィールドの値を更新する記述例

カレントプロジェクトのデータベースに接続する場合の記述【パターン1】

テーブル「飲料リストの」フィールド「通し番号」に「AA06」フィールド「品目」に「プーアル茶」のレコードを追加

▼取得対象テーブル「飲料リスト」▼


▼記述例▼

Sub CurrentTable()

Dim CNT As ADODB.connection
Dim RST As ADODB.Recordset
Dim FList As Variant
Dim VList As Variant

Set CNT = CurrentProject.connection
Set RST = New ADODB.Recordset

RST.Open "飲料リスト", CNT, adOpenKeyset, adLockOptimistic

FList = Array("通し番号", "品目")
VList = Array("AA06", "プーアル茶")
RST.AddNew FList, VList

RST.Close: CNT.Close
Set RST = Nothing: Set CNT = Nothing

End Sub

▼実行結果▼


カレントプロジェクト以外のデータベースに接続して更新する場合の記述【パターン2】

テーブル「外部ファイルの飲料リスト」にて]
「通し番号」に「AA07」、「品目」に「ウーロン茶」、「在庫数」に「0」のレコードを追加

▼取得対象テーブル「外部ファイルの飲料リスト」▼


▼記述例▼

Sub test_yubindataSub()

Dim CNT As New ADODB.connection
Dim RST As New ADODB.Recordset

CNT.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source= C:\Users\user\デスクトップ\tama-shi\ken_all\yubin_data\KEN_ALL.accdb"
RST.Open "外部ファイルの飲料リスト", CNT, adOpenKeyset, adLockOptimistic

RST.AddNew
RST("通し番号") = "AA07"
RST("品目") = "ウーロン茶"
RST("在庫数") = 0
RST.Update

RST.Close: CNT.Close
Set RST = Nothing: Set CNT = Nothing

End Sub

▼実行結果▼