清除当前 Recordset 对象,并通过一系列命令向前推进,返回下一个 Recordset。
语法
Set recordset2 = recordset1.NextRecordset(RecordsAffected )
返回值
返回 Recordset 对象。 在语法模型中,recordset1 和 recordset2 可以是相同的 Recordset 对象,也可以使用单独的对象。 使用单独的 Recordset 对象时,调用 NextRecordset 后重置原始 Recordset (recordset1) 上的 ActiveConnection 属性将生成错误。
参数
RecordsAffected
可选。 提供程序将返回当前作受影响的记录数的 Long 变量。
注释
此参数仅返回受作影响的记录数;它不返回用于生成 Recordset 的 select 语句中的记录计数。
注解
使用 NextRecordset 方法返回复合命令语句或返回多个结果的存储过程中的下一个命令的结果。 如果基于复合命令语句打开 Recordset 对象(例如,“SELECT * FROM table1;SELECT * FROM table2“) 使用 Command 上的 Execute 方法或 Recordset 上的 Open 方法,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 时,只会返回生成的记录集。
但是,只有在调用 NextRecordset 之后,其他提供程序才能在语句中执行下一个命令。 对于这些提供程序,如果在单步执行整个命令语句之前显式关闭 Recordset 对象,则 ADO 永远不会执行剩余的命令。