レコードの追加(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  | 
					
実行結果
関連記事
-  
            
              - 
      
データベース(Access 等)に接続(ADO)
ADO で、データベースに接続 外部データベースを操作する方法のひとつに ADO …
 
-  
            
              - 
      
Excel VBA のクラスを使ってデータベースへ接続する(ADO)
データベースの処理をクラスモジュールに書く ExcelVBAで、クラス使用する方 …
 
-  
            
              - 
      
レコードの削除(ADO)Delete メソッド
データベースのレコードを削除する Delete メソッド カレントレコードを削除 …
 
-  
            
              - 
      
レコードを指定した条件で抽出する(ADO)Filter プロパティ
データベースのレコードを指定した条件で抽出する Filter プロパティ 【書式 …
 
-  
            
              - 
      
クエリにパラメータを渡して結果を取得する(ADO)Command オブジェクト・Execute メソッド
クエリにパラメータを渡して結果を取得する手順 Command オブジェクトの作成 …
 
-  
            
              - 
      
データベース(SQL Server)に接続する(ADO)
データベース(SQL Server)に接続 ODBC または OLE DB で接 …
 
-  
            
              - 
      
CSVファイルに接続(ADO)
ADOでCSVファイルに接続 ADO を使用してCSVファイルを読み込みます。C …
 
-  
            
              - 
      
レコードを並べ替える(ADO)Sort プロパティ
データベースのレコードを並べ替える Sort プロパティ 【書式】 object …
 
-  
            
              - 
      
クエリの作成・削除(ADOX)
ADOX を使用してクエリを作成・削除 クエリを作成する手順 【書式】 <参照設 …
 
-  
            
              - 
      
データベースを作成する(ADOX)
ADOX を使用してデータベース(Access)を作成 Catalog オブジェ …
 
        