レコードの追加(ADO)AddNew メソッド,Update メソッド
データベースにレコードを追加する
AddNew メソッド
新規レコードを追加し、追加したレコードにカーソルを移動します。
object.AddNew [ FieldList, Values ]
引数・戻り値
- object ・・・ 対象となる Recordset オブジェクトを指定します。
- FieldList ・・・ 追加するレコードのフィールド名を指定します。複数のフィールド名を指定するには、フィールド名、または位置を表す値の並びを配列として指定します。省略可。
- Values ・・・ 追加するレコードの値を指定します。複数の値を指定するには配列にします。省略可。
新規レコードを追加する場合、Recordset オブジェクトの Open メソッドの引数 LockType には、adLockOptimistic または adLockPessimistic を指定します。(Recordset を開く時に使うロックの種類に関しては、データベース(Access 等)に接続(ADO) を参照して下さい。)
AddNew メソッドを呼び出した後は新規レコードがカレントレコードになり、Update メソッドを呼び出した後もそのままカレントレコードになります。
レコードを追加後、その変更を保存するには、Update メソッドを実行します。
ただし、Update メソッド実行前に、追加したレコードから移動すると自動的に、Update メソッドが実行され変更が保存されます。
引数を省略し、Field オブジェクトのValue プロパティを使用してレコードの値を設定することも出来ます。
1 2 3 4 5 6 7 8 9 |
with rs .AddNew .Fields("ID").Value = 3 .Fields("NAME").Value = "jack" .Fields("CONTRY").Value = "アメリカ" .Update end with |
Update メソッド
レコードの追加や変更内容を保存します。
object.Update
引数・戻り値
- object ・・・ 対象となる Recordset オブジェクトを指定します。
Update メソッド実行前後でカレントレコードは移動しません。
AddNew メソッド・Update メソッド 使用例
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
Sub Sample_AddNew() '参照設定:Microsoft ActiveX Data Objects 6.1 Library Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim constr As String Dim DBFile As String Dim strSQL As String Dim i As Long Dim j As Long DBFile = ActiveWorkbook.Path & "\mydb1.accdb" constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBFile Set cn = New ADODB.Connection cn.ConnectionString = constr cn.Open Set rs = New ADODB.Recordset With rs 'テーブルを開く .Source = "テーブル1" .ActiveConnection = cn .CursorType = adOpenKeyset 'キーセットカーソル使用 .LockType = adLockPessimistic 'レコード単位排他的ロック .Open 'レコードの追加 .AddNew Array("ID", "NAME", "CONTRY"), Array(3, "jack", "アメリカ") '変更内容を保存 .Update End With With Worksheets("Sheet1") rs.MoveFirst i = 1 .Cells.Clear Do Until rs.EOF For j = 0 To rs.Fields.Count - 1 If i = 1 Then .Cells(i, j + 1) = rs(j).Name .Cells(i + 1, j + 1) = rs(j).Value Next j rs.MoveNext i = i + 1 Loop End With rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub |
実行結果
関連記事
-
テーブルの作成・削除/フィールドの作成・削除(ADOX)
ADOX を使用してテーブル・フィールド(列)を作成・削除 Table オブジェ …
-
インデックス、プロパティの設定(ADOX)
インデックスを作成する index オブジェクト 【書式】 <CreateObj …
-
クエリの作成・削除(ADOX)
ADOX を使用してクエリを作成・削除 クエリを作成する手順 【書式】 <参照設 …
-
Excelファイルに接続(ADO)
ADOでExcelファイルに接続 ADO を使用してExcelファイルを読み込み …
-
BOF プロパティ・EOF プロパティ(ADO)
EOF プロパティ・BOF プロパティ BOF プロパティは、カレントレコードの …
-
CSVファイルに接続(ADO)
ADOでCSVファイルに接続 ADO を使用してCSVファイルを読み込みます。C …
-
Excel VBA のクラスを使ってデータベースへ接続する(ADO)
データベースの処理をクラスモジュールに書く ExcelVBAで、クラス使用する方 …
-
Recordset オブジェクトの内容をワークシートにコピーする(CopyFromRecordset メソッド・ADO)
CopyFromRecordset メソッド ADO の Recordset オ …
-
データベース(Access 等)に接続(ADO)
ADO で、データベースに接続 外部データベースを操作する方法のひとつに ADO …
-
テーブル名、クエリ名の取得(ADOX)
テーブル名の取得 Table.Type プロパティ 【書式】 <取得> obje …