AddNew 方法 (ADO)
為可更新的 Recordset 物件建立新記錄。
語法
recordset.AddNew FieldList, Values
參數
recordset
Recordset 物件。
FieldList
選擇性。 新記錄中欄位的單一名稱或名稱陣列或序數位置。
值
選擇性。 新記錄中欄位的單一值或值陣列。 如果 Fieldlist 為陣列,Values 也必須為具有相同成員數目的陣列;否則,便會發生錯誤。 欄位名稱的順序必須符合每個陣列中的欄位值順序。
備註
使用 AddNew 方法來建立新記錄並將其初始化。 使用 Supports 方法搭配 adAddNew (一種 CursorOptionEnum 值),以確認您是否可以將記錄新增至目前的 Recordset 物件。
呼叫 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,但是提供者不會將變更張貼至底層資料庫,或將 EditMode 重設為 adEditNone,直到您呼叫 UpdateBatch 方法為止。 如果您傳遞 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 方法