次の方法で共有


AddNew メソッド (ADO)

更新可能な Recordset オブジェクトの新しいレコードを作成します。

構文

  
recordset.AddNew FieldList, Values  

パラメーター

recordset
Recordset オブジェクト。

FieldList
任意。 単一の名前、または新しいレコード内のフィールドの名前または序数位置の配列。


任意。 1 つの値、または新しいレコード内のフィールドの値の配列。 Fieldlist が配列の場合、Values も同じ数のメンバーを持つ配列である必要があります。それ以外の場合は、エラーが発生します。 フィールド名の順序は、各配列内のフィールド値の順序と一致する必要があります。

注釈

AddNew メソッドを使用して、新しいレコードを作成および初期化します。 現在の Recordset オブジェクトにレコードを追加できるかどうかを確認するには、adAddNew (CursorOptionEnum 値) で Supports メソッドを使用します。

AddNew メソッドを呼び出すと、新しいレコードが現在のレコードになり、Update メソッドを呼び出した後も最新の状態が維持されます。 新しいレコードが Recordset に追加されるため、更新の後に MoveNext を呼び出すと、 レコードセットの末尾を越えて移動し、 EOF True になります。 Recordset オブジェクトがブックマークをサポートしていない場合は、別のレコードに移動した後、新しいレコードにアクセスできない可能性があります。 カーソルの種類によっては、 Requery メソッドを呼び出して新しいレコードにアクセスできるようにする必要がある場合があります。

現在のレコードの編集中または新しいレコードの追加中に AddNew を呼び出すと、ADO は Update メソッドを呼び出して変更を保存し、新しいレコードを作成します。

AddNew メソッドの動作は、Recordset オブジェクトの更新モードと、引数 FieldlistValues を渡すかどうかによって異なります。

即時更新モード (Update メソッドを呼び出すと、プロバイダーが基になるデータ ソースに変更を書き込む) では、引数を指定せずに AddNew メソッドを呼び出すと、EditMode プロパティが adEditAdd (EditModeEnum 値) に設定されます。 プロバイダーは、フィールド値の変更をローカルにキャッシュします。 Update メソッドを呼び出すと、新しいレコードがデータベースにポストされ、EditMode プロパティが adEditNone (EditModeEnum 値) にリセットされます。 引数 FieldlistValues を渡すと、ADO は新しいレコードをデータベースに直ちにポストします (Update 呼び出しは必要ありません)。EditMode プロパティの値は変更されません (adEditNone)。

バッチ更新モード (プロバイダーが複数の変更をキャッシュし、UpdateBatch メソッドを呼び出すときにのみ基になるデータ ソースに書き込む) では、引数を指定せずに AddNew メソッドを呼び出すと、EditMode プロパティが adEditAdd に設定されます。 プロバイダーは、フィールド値の変更をローカルにキャッシュします。 Update メソッドを呼び出すと、新しいレコードが現在の Recordset に追加されますが、UpdateBatch メソッドを呼び出すまで、プロバイダーは基になるデータベースに変更をポストしたり、EditModeadEditNone にリセットしたりすることはありません。 引数 FieldlistValues を渡すと、ADO はキャッシュ内のストレージの新しいレコードをプロバイダーに送信し、EditModeadEditAdd に設定します。基になるデータベースに新しいレコードをポストするには、UpdateBatch メソッドを呼び出す必要があります。

次の例は、フィールド リストと値リストを含む AddNew メソッドを使用して、フィールド リストと値リストを配列として含める方法を示しています。

create table aa1 (intf int, charf char(10))  
insert into aa1 values (2, 'aa')  
  
Dim cn As New adodb.Connection  
Dim rs As New adodb.Recordset  
Dim cmd As New adodb.Command  
  
cn.ConnectionString = "Provider=SQLOLEDB;Data Source=alexverb2;uid=sa;pwd=<password>;"  
  
cn.Open  
rs.Open "select * from xxx..aa1", cn, adOpenKeyset, adLockOptimistic  
  
Dim fieldsArray(1) As Variant  
fieldsArray(0) = "intf"  
fieldsArray(1) = "charf"  
Dim values(1) As Variant  
values(0) = 4  
values(1) = "as"  
rs.AddNew fieldsArray, values  
rs.Update  

適用対象

Recordset オブジェクト (ADO)

こちらもご覧ください

AddNew メソッドの使用例 (VB)
AddNew メソッドの使用例 (VBScript)
AddNew メソッドの使用例 (VC++)
CancelUpdate メソッド (ADO)
EditMode プロパティ
Requery メソッドの
サポートメソッドの
Update メソッドの
UpdateBatch メソッドの