レコードの追加(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 | 
実行結果
関連記事
-  
              
- 
      データベース(MySQL)に接続する(ADO)MySQL ODBCドライバ Windowsには標準で、いくつかの ODBC ド … 
-  
              
- 
      データベースを作成する(ADOX)ADOX を使用してデータベース(Access)を作成 Catalog オブジェ … 
-  
              
- 
      テーブルの作成・削除/フィールドの作成・削除(ADOX)ADOX を使用してテーブル・フィールド(列)を作成・削除 Table オブジェ … 
-  
              
- 
      レコードを並べ替える(ADO)Sort プロパティデータベースのレコードを並べ替える Sort プロパティ 【書式】 object … 
-  
              
- 
      レコードの更新(ADO)Update メソッドデータベースのレコードを更新する Update メソッド カレントレコードの内容 … 
-  
              
- 
      フィールド名(ADO)Field オブジェクトField オブジェクト Recordset オブジェクト内の列(フィールド)を … 
-  
              
- 
      クエリの作成・削除(ADOX)ADOX を使用してクエリを作成・削除 クエリを作成する手順 【書式】 <参照設 … 
-  
              
- 
      データベース(SQL Server)に接続する(ADO)データベース(SQL Server)に接続 ODBC または OLE DB で接 … 
-  
              
- 
      インデックス、プロパティの設定(ADOX)インデックスを作成する index オブジェクト 【書式】 <CreateObj … 
-  
              
- 
      カレントレコードの移動(ADO)MoveFirst、MoveLast、MoveNext、MovePrevious、MoveMoveFirst メソッド、MoveLast メソッド、MoveNext メソ … 
 
        
