Программирование в ACCESS 2000, страница 12

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

Три свойства объекта Connection определяют выполняемую команду:

СommandText — текст выполняемой команды;

СommandType — тип команды;

СommandTimeout — время ожидания результата.

Свойство CommandText является инструкцией SQL, именем таблицы или запроса (хранимой процедуры), которые нужно выполнить.

Свойство CommandType позволяет указать, каким образом нужно интерпретировать значение свойства CommandText. Это означает, что с помощью объекта Command можно выполнить грукцию SQL, запрос (хранимую процедуру) или получить все записи из заданной таблицы.

Свойства CommandType и CommandTimeout можно не устанавливатъ, в этом случае будут использоваться значения по умолчанию, например, значение параметра ConnectionTimeout по умолчанию равно 30 с.

Чтобы выполнить операцию над данными, которая задана свойством CommandText, используется метод Execute объекта Command. Метод Execute имеет три аргумента RecordsAffected, Parameters, Options.

Аргумент RecordsAffected после выполнения запроса содержит число измененных записей.

ПРИМЕЧАНИЕ      Аргумент RecordsAffected определяет количество измененных записей только для запроса на изменение данных. Если запрос возвращает записи, значение этого аргумента не показывает число записей в наборе. Для этого следует использовать свойство RecordCount возвращаемого объекта Recordset.

Аргумент Parameters — это массив переменных типа Variant, которые представляют собой параметры инструкции SQL. Аргумент Options позволяет задать некоторые свойства выполняемого запроса.

Возможность передать в методе Execute параметры обеспечивает выполнение параметрических запросов. Кроме того, объект Command имеет семейство Parameters, элементами которого являются параметры запроса. Таким образом, параметры запроса допустимо передавать двумя способами:

·  с помощью объектов Parameter семейства Parameters;

·  с помощью аргумента метода Execute.

Чтобы выполнить параметрический запрос, который хранится в базе данных, можно использовать для доступа к этому запросу либо объекты ADOX, либо свойство провайдера Jet OLEDB:Stored Query. В следующем примере (листинг 5.24) выполняется запрос с параметрами Поступления. Параметры передаются с помощью аргумента метода Execute. Значение свойства Jet OLEDB:Stored Query устанавливается равным True, чтобы показать, что значение свойства CommandText нужно интерпретировать как сохраненный в базе данных запрос.

Листинг 5.24. Выполнение запроса с параметрами (ADO)

Dim cnn As ADODB.Connection

Dim cmd As ADODB.Command

Dim  rst As  New ADODB.Recordset   

‘открываем соединение

Set cnn = CurrentProject.Connection

cat.ActiveConnection = cnn

'   создаем объект Command

Set  cmd = New ADODB.Command

With cmd

  .ActiveConnection = cnn

  .Properties("Jet OLEDB:Stored Query") = True

.CommandText = "Поступления"

End With

‘создаем набор записей

Set rst = New ADODB.Recordset

Set rst = cmd.Execute(Parameters:=Array _

(Forms!Период!От, Date))

‘ закрываем соединение и освобождаем объектные переменные

cnn.Close

Set   rst  = Nothing

Set  cnn  =  Nothing

В этом примере запрос с параметрами возвращает набор записей, которые образуют объект Recordset. Этот объект присутствует как в модели DAO, так и в модели ADO и позволяет работать с данными на уровне записей.

Работасзаписями

Работа с данными на уровне записей предполагает выполнение таких операций, как поиск, добавление, обновление и удаление записей. Все эти операции можно выполнить с помощью инструкций SQL, которые определяют объекты QueryDef щш Command. Но теперь мы рассмотрим, как можно выполнить их с помощью эбъекта Recordset.