Метод 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 никогда не выполняет оставшиеся команды.
Применение
См. также:
Пример метода NextRecordset (Visual Basic)
Пример метода NextRecordset (Visual C++)