NextRecordset 方法 (ADO)
清除当前的 Recordset 对象,并通过推进一系列命令返回下一个 Recordset。
语法
Set recordset2 = recordset1.NextRecordset(RecordsAffected )
返回值
返回 Recordset 对象。 在语法模型中,recordset1 和 recordset2 可以是同一个 Recordset 对象,你也可以使用单独的对象。 使用单独的 Recordset 对象时,在调用 NextRecordset 后重置原始 Recordset (recordset1) 上的 ActiveConnection 属性将产生错误。
参数
RecordsAffected
可选。 提供程序返回当前操作影响的记录数的 Long 变量。
注意
此参数仅返回受操作影响的记录数;它不会从用于生成 Recordset 的 select 语句中返回记录计数。
备注
使用 NextRecordset 方法返回复合命令语句中下一个命令的结果,或返回多个结果的存储过程的结果。 如果使用 Command 上的 Execute 方法或使用 Recordset 上的 Open 方法,基于复合命令语句(例如,"SELECT * FROM table1;SELECT * FROM table2")打开 Recordset 对象,ADO 仅执行第一个命令并将结果返回到 recordset。 若要访问语句中后续命令的结果,请调用 NextRecordset 方法。
只要有其他结果,且包含复合语句的 Recordset 未断开连接或跨进程边界封送,NextRecordset 方法将继续返回 Recordset 对象。 如果 row-returning 命令成功执行但未返回任何记录,返回的 Recordset 对象将打开但为空。 通过验证 BOF 和 EOF 属性是否都为 True 来测试此情况。 如果 non-row-returning 命令成功执行,将关闭返回的 Recordset 对象,可以通过测试 Recordset 上的 State 属性对其进行验证。 没有更多结果时,recordset 将设置为 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 永远不会执行剩余命令。