NextRecordset 方法 (ADO)
清除目前的 Recordset 物件,並透過一系列命令繼續操作,以傳回下一個 Recordset。
語法
Set recordset2 = recordset1.NextRecordset(RecordsAffected )
傳回值
傳回 Recordset 物件。 在語法模型中,recordset1 和 recordset2 可以是相同的 Recordset 物件,您也可以使用不同的物件。 當您使用不同的 Recordset 物件時,若在呼叫 NextRecordset 後重設原始 Recordset (recordset1) 上的 ActiveConnection 屬性,將會產生錯誤。
參數
RecordsAffected
選擇性。 Long 變數,提供者會將受目前作業影響的記錄數目傳回給此變數。
注意
此參數只會傳回受作業影響的記錄數目;其不會從用於產生 Recordset 的所選陳述式傳回記錄數目。
備註
使用 NextRecordset 方法可傳回複合命令陳述式中下一個命令的結果,或是有多筆傳回結果之預存程序的結果。 若您根據複合命令陳述式 (例如 “SELECT * FROM table1;SELECT * FROM table2”),使用 Command 上的 Execute 方法或 Recordset 上的 Open 方法來開啟 Recordset 物件,ADO 只會執行第一個命令並將結果傳回「資料錄集」。 若要存取陳述式中後續命令的結果,請呼叫 NextRecordset 方法。
只要有其他結果存在,且包含複合陳述式的 Recordset 並未中斷連線或跨程序界限進行封送處理,NextRecordset 方法就會繼續傳回 Recordset 物件。 若傳回資料列的命令成功執行,但並未傳回任何記錄,則傳回的 Recordset 物件即會開啟,但為空白。 您可以確認 BOF 和 EOF 屬性皆為 True,以測試此案例。 若非傳回資料列的命令成功執行,則傳回的 Recordset 物件即會關閉。您可以測試 Recordset 上的 State 屬性,以驗證此點。 如果沒有更多結果,「資料錄集」將會設為 Nothing。
NextRecordset 方法無法在中斷連線的 Recordset 物件上使用,其中 ActiveConnection 已設為 Nothing (Microsoft Visual Basic) 或 NULL (其他語言)。
如果在立即更新模式下進行編輯,呼叫 NextRecordset 方法會產生錯誤;請先呼叫 Update 或 CancelUpdate 方法。
若要填入 Parameters 集合物件或傳遞具有原始 Open 或 Execute 呼叫的陣列,藉此為複合陳述式中的多個命令傳遞參數,則參數在集合物件或陣列中的順序必須與命令系列中相對應的命令順序相同。 您必須先完成所有結果的讀取,再讀取輸出參數值。
您的 OLE DB 提供者會決定複合陳述式中各個命令的執行時機。 例如,Microsoft OLE DB Provider for SQL Server 會在接收複合陳述式時執行批次中的所有命令。 當您呼叫 NextRecordset 時,即會傳回產生的 Recordsets。
不過,其他提供者只會在呼叫 NextRecordset 後執行陳述式中的下一個命令。 對這些提供者而言,若您在逐步執行整個命令陳述式之前,明確關閉了 Recordset 物件,則 ADO 永遠不會執行剩下的命令。