AddNew メソッド (ADO)
更新可能な Recordset オブジェクトの新しいレコードを作成します。
構文
recordset.AddNew FieldList, Values
パラメーター
recordset
Recordset オブジェクト。
FieldList
省略可能。 新しいレコード内のフィールドの 1 つの名前、名前の配列、または序数位置。
値
省略可能。 新しいレコード内のフィールドの 1 つの値または値の配列。
Fieldlist が配列の場合、Values も同じ数のメンバーを含む配列である必要があります。そうでないと、エラーが発生します。 各配列のフィールド名の順序は、フィールド値の順序と一致している必要があります。
注釈
新しいレコードを作成して初期化するには、AddNew メソッドを使います。 現在の Recordset オブジェクトにレコードを追加できるかどうかを調べるには、Supports メソッドと adAddNew (CursorOptionEnum の値) を使います。
AddNew メソッドを呼び出した後は新しいレコードが現在のレコードになり、Update メソッドの呼び出し後も現在のレコードはそのままになります。 新しいレコードは Recordset に追加されるため、Update に続いて MoveNext を呼び出すと Recordset の末尾を越えて移動し、EOF が True になります。 Recordset オブジェクトがブックマークをサポートしていない場合は、別のレコードに移動すると、新しいレコードにアクセスできなくなる可能性があります。 カーソルの種類によっては、Requery メソッドを呼び出して新しいレコードにアクセスできるようにする必要がある場合があります。
現在のレコードの編集中または新しいレコードの追加中に AddNew を呼び出すと、ADO は Update メソッドを呼び出して変更を保存してから新しいレコードを作成します。
AddNew メソッドの動作は、Recordset オブジェクトの更新モードと、、引数 Fieldlist と Values を渡すかどうかによって異なります。
"即時更新モード" (Update メソッドを呼び出すと、プロバイダーは基になるデータ ソースに変更を書き込みます) では、引数を指定せずに AddNew メソッドを呼び出すと、EditMode プロパティが adEditAdd (EditModeEnum の値) に設定されます。 プロバイダーは、フィールドの値の変更をすべてローカル環境にキャッシュします。 Update メソッドを呼び出すと、新しいレコードがデータベースにポストされ、EditMode プロパティが adEditNone (EditModeEnum の値) にリセットされます。 引数 Fieldlist と Values を渡すと、ADO はすぐに新しいレコードをデータベースにポストします (Update を呼び出す必要はありません)。EditMode プロパティの値は変わりません (adEditNone)。
"バッチ更新モード" (プロバイダーによって複数の変更がキャッシュされ、UpdateBatch メソッドを呼び出した場合にのみ基になるデータ ソースに書き込まれます) では、引数を指定せずに AddNew メソッドを呼び出すと、EditMode プロパティが adEditAdd に設定されます。 プロバイダーは、フィールドの値の変更をすべてローカル環境にキャッシュします。 Update メソッドを呼び出すと、新しいレコードが現在の Recordset に追加されますが、UpdateBatch メソッドを呼び出すまで、プロバイダーは基になるデータベースに変更をポストしたり、EditMode を adEditNone にリセットしたりしません。 引数 Fieldlist と Values を渡すと、ADO はキャッシュに格納するために新しいレコードをプロバイダーに送信し、EditMode を adEditAdd に設定します。基になるデータベースに新しいレコードをポストするには、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
適用対象
参照
AddNew メソッドの例 (VB)
AddNew メソッドの例 (VBScript)
AddNew メソッドの例 (VC++)
CancelUpdate メソッド (ADO)
EditMode プロパティ
Requery メソッド
Supports メソッド
Update メソッド
UpdateBatch メソッド