Метод Open (объект Recordset ADO)

Открывает курсор на объект Recordset .

Синтаксис

  
recordset.Open Source, ActiveConnection, CursorType, LockType, Options  

Параметры

Источник
Необязательный элемент. Значение Variant, результатом которого является допустимый объект Command, инструкция SQL, имя таблицы, вызов хранимой процедуры, URL-адрес или имя файла или объекта Stream, содержащего постоянно хранящийся набор записей.

ActiveConnection
Необязательный элемент. Значение Variant , результатом которого является допустимое имя переменной объекта Connection , или значение String , содержащее параметры ConnectionString .

CursorType
Необязательный элемент. Значение CursorTypeEnum , определяющее тип курсора, который поставщик должен использовать при открытии набора записей. Значение по умолчанию — adOpenForwardOnly.

LockType
Необязательный элемент. Значение LockTypeEnum , определяющее тип блокировки (параллелизма), который поставщик должен использовать при открытии набора записей. Значение по умолчанию — adLockReadOnly.

Параметры
Необязательный элемент. Значение Типа Long , указывающее, как поставщик должен оценивать аргумент Source , если он представляет что-то, отличное от объекта Command , или что набор записей должен быть восстановлен из файла, в котором он был ранее сохранен. Может быть одним или несколькими значениями CommandTypeEnum или ExecuteOptionEnum , которые можно объединить с побитовой оператором OR.

Примечание

При открытии набора записей из потока, содержащего сохраненный набор записей, использование значения ExecuteOptionEnumadAsyncFetchNonBlocking не будет иметь никакого эффекта; выборка будет синхронной и блокирующей.

Примечание

Значения ExecuteOpenEnumadExecuteNoRecords или adExecuteStream не следует использовать с Open.

Комментарии

Курсор по умолчанию для набора записей ADO — это курсор только для чтения, доступный только для чтения, расположенный на сервере.

При использовании метода Open для объекта Recordset открывается курсор, представляющий записи из базовой таблицы, результаты запроса или ранее сохраненный набор записей.

Используйте необязательный аргумент Source , чтобы указать источник данных, используя одну из следующих команд: переменную объекта Command , инструкцию SQL, хранимую процедуру, имя таблицы, URL-адрес или полное имя пути к файлу. Если source является именем файла, это может быть полный путь ("c:\dir\file.rst"), относительный путь (".. \file.rst") или URL-адрес (https://files/file.rst).

Не рекомендуется использовать аргумент Source метода Open для выполнения запроса действия, который не возвращает записи, так как нет простого способа определить, был ли вызов успешным. Набор записей, возвращенный таким запросом, будет закрыт. Чтобы выполнить запрос, который не возвращает записи, например инструкцию SQL INSERT, вызовите метод Execute объекта Command или метод Execute объекта Connection .

Аргумент ActiveConnection соответствует свойству ActiveConnection и указывает, в каком соединении открывается объект Recordset . Если вы передаете определение подключения для этого аргумента, ADO открывает новое подключение с использованием указанных параметров. После открытия набора записей с помощью курсора на стороне клиента, задав для свойства CursorLocation значение adUseClient, можно изменить значение этого свойства, чтобы отправлять обновления другому поставщику. Вы также можете задать для этого свойства значение Nothing (в Microsoft Visual Basic) или NULL, чтобы отключить набор записей от любого поставщика. Однако изменение ActiveConnection для курсора на стороне сервера приводит к ошибке.

Для других аргументов, которые непосредственно соответствуют свойствам объекта Recordset (Source, CursorType и LockType), связь аргументов со свойствами выглядит следующим образом:

  • Свойство считывается и записывается перед открытием объекта Recordset .

  • Параметры свойства используются, если при выполнении метода Open не передаются соответствующие аргументы. Если передать аргумент, он переопределяет соответствующий параметр свойства, а параметр свойства обновляется значением аргумента.

  • После открытия объекта Recordset эти свойства становятся доступными только для чтения.

Примечание

Свойство ActiveConnection доступно только для чтения для объектов Recordset , свойство Source которых имеет допустимый объект Command , даже если объект Recordset не открыт.

Если передать объект Command в аргумент Source , а также аргумент ActiveConnection , возникнет ошибка. Свойству ActiveConnection объекта Command уже должно быть присвоено значение допустимого объекта Connection или строки подключения.

Если в аргументе Source передается не объект Command, можно использовать аргумент Options для оптимизации вычисления аргумента Source. Если аргумент Options не определен, производительность может снизиться, так как ADO должен выполнять вызовы к поставщику, чтобы определить, является ли аргумент инструкцией SQL, хранимой процедурой, URL-адресом или именем таблицы. Если вы знаете, какой тип источника вы используете, установка аргумента Параметры указывает ADO перейти непосредственно к соответствующему коду. Если аргумент Options не соответствует типу Source , возникает ошибка.

При передаче объекта Stream в аргументе Source не следует передавать информацию в другие аргументы. Это приведет к ошибке. Сведения ActiveConnection не сохраняются при открытии набора записей из потока.

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

Если источник данных не возвращает записей, поставщик устанавливает для свойств BOF и EOFзначение True, а текущая позиция записи не определена. Вы по-прежнему можете добавлять новые данные в этот пустой объект Recordset , если это разрешено типом курсора.

Завершив операции с открытым объектом Recordset , используйте метод Close , чтобы освободить все связанные системные ресурсы. Закрытие объекта не удаляет его из памяти; Вы можете изменить его параметры свойств и использовать метод Open , чтобы открыть его снова позже. Чтобы полностью исключить объект из памяти, задайте для переменной объекта значение Nothing.

Прежде чем задать свойство ActiveConnection, вызовите Open без операндов, чтобы создать экземпляр набора записей, созданного путем добавления полей в коллекцию Полейнабора записей.

Если для свойства CursorLocation задано значение adUseClient, можно асинхронно извлекать строки одним из двух способов. Рекомендуется задать для параметра Параметры значение adAsyncFetch. Кроме того, можно использовать динамическое свойство "Асинхронная обработка набора строк" в коллекции Properties , но связанные извлеченные события могут быть потеряны , если не задать для параметра Options значение adAsyncFetch.

Примечание

Фоновая выборка в поставщике MS Remote поддерживается только с помощью параметра Options метода Open.

Примечание

URL-адреса, использующие схему HTTP, автоматически вызывают поставщик Microsoft OLE DB для публикации в Интернете. Дополнительные сведения см. в разделе Абсолютные и относительные URL-адреса.

Некоторые сочетания значений CommandTypeEnum и ExecuteOptionEnum недопустимы. Сведения о том, какие параметры нельзя объединить, см. в разделах executeOptionEnum и CommandTypeEnum.

Применение

Объект Recordset (ADO)

См. также:

Примеры методов Open и Close (Visual Basic)
Примеры методов Open и Close (VBScript)
Примеры методов Open и Close (Visual C++)
Примеры методов Save и Open (Visual Basic)
Метод Open (объект Connection ADO)
Метод Open (объект Record ADO)
Метод Open (объект Stream ADO)
Метод OpenSchema
Метод Save