Метод NextRecordset (ADO)

Очищает текущий объект Recordset и возвращает следующий набор записей , проходя по ряду команд.

Синтаксис

  
Set recordset2 = recordset1.NextRecordset(RecordsAffected )  

Возвращаемое значение

Возвращает объект Recordset . В синтаксической модели recordset1 и recordset2 могут быть одинаковыми объектами Recordset или использовать отдельные объекты. При использовании отдельных объектов Recordset сброс свойства ActiveConnection в исходном наборе записей (recordset1) после вызова NextRecordset приведет к ошибке.

Параметры

RecordsAffected
Необязательный элемент. Переменная Long , в которую поставщик возвращает количество записей, затронутых текущей операцией.

Примечание

Этот параметр возвращает только количество записей, затронутых операцией; Он не возвращает количество записей из инструкции select, используемой для создания набора записей.

Комментарии

Используйте метод NextRecordset для возврата результатов следующей команды в составной командной инструкции или хранимой процедуры, возвращающей несколько результатов. Если открыть объект Recordset на основе составной командной инструкции (например, "SELECT * FROM table1; SELECT * FROM table2") с помощью метода Execute в Command или Open в Recordset, ADO выполняет только первую команду и возвращает результаты в набор записей. Чтобы получить доступ к результатам последующих команд в инструкции , вызовите метод NextRecordset .

До тех пор, пока есть дополнительные результаты и набор Recordset , содержащий составные инструкции, не отключается или не маршалируется через границы процесса, метод NextRecordset будет продолжать возвращать объекты Recordset . Если команда, возвращающая строки, выполняется успешно, но не возвращает записей, возвращенный объект Recordset будет открыт, но пуст. Проверьте этот случай, убедившись, что свойства BOF и EOF имеют значение True. Если команда, не возвращающая строки, успешно выполняется, возвращенный объект Recordset будет закрыт, что можно проверить, проверив свойство State в Наборе записей. Если результатов больше нет, набору записей будет присвоено значение Nothing.

Метод NextRecordset недоступен в отключенном объекте Recordset , где для Параметра ActiveConnection задано значение Nothing (в Microsoft Visual Basic) или NULL (на других языках).

Если изменение выполняется в режиме немедленного обновления, вызов метода NextRecordset приводит к ошибке. сначала вызовите метод Update или CancelUpdate .

Чтобы передать параметры для нескольких команд в составной инструкции, заполнив коллекцию Parameters или передав массив с помощью исходного вызова Open или Execute , параметры должны находиться в том же порядке в коллекции или массиве, что и соответствующие команды в ряде команд. Необходимо завершить чтение всех результатов перед чтением значений выходных параметров.

Поставщик OLE DB определяет, когда выполняется каждая команда в составной инструкции. Поставщик Microsoft OLE DB для SQL Server, например, выполняет все команды в пакете после получения составной инструкции. Результирующие наборы записей просто возвращаются при вызове NextRecordset.

Однако другие поставщики могут выполнять следующую команду в инструкции только после вызова NextRecordset. Для этих поставщиков, если явно закрыть объект Recordset перед пошаговой обработкой всей инструкции команды, ADO никогда не выполняет оставшиеся команды.

Применение

Объект Recordset (ADO)

См. также:

Пример метода NextRecordset (Visual Basic)
Пример метода NextRecordset (Visual C++)