Каммингс Стив
Шрифт:
With rstBucket
.Update Array("Имя", "Звание", "Любимый напиток"),
Array("Лола", "Младший лейтенант", "Кофе")
End With
Используйте цикл Do для проверки или операций с несколькими записями в наборе, как показано в следующем примере;
'Циклическое перемещение между записями в наборе
With rstInPeace
Do Until .EOF
Debug.Print.Fields(0)
.MoveNext
Loop
End With
SetrstInPeace = Nothing
End Sub
Использование объекта Command
В ADO объект Command представляет команду, такую как инструкция SQL или сохраненная процедура, которая может применяться к источнику данных. Вы можете использовать объекты Commands для получения записей из объектов Recordset, а также выполнения таких операций, как обновление или удаление нескольких записей. (Пример программного кода, приведенный ниже, выполняет только последние операции; примеры, использующие наборы записей, приведены раньше в настоящей главе.)
Не удивляйтесь, если вы не сможете использовать объект Command с определенным источником данных. Средства доступа OLE DB Provider не нужны для реализации объекта Command, а значит, и не требуются для обработки параметров.
Хранимые процедуры - это запросы и другие операции, которые вы или кто-нибудь еще определили раньше (обычно с помощью SQL) и сохранили в источнике данных. В качестве хранимых процедур можно привести запросы Access. Несмотря на то, что вы можете спроектировать запрос Access визуально с помощью сетки, он представляет собой инструкцию, которую вы увидете, выбрав представление SQL. Запрос сохраняется как часть файла базы данных .mdb, к которой он относится. Сетевые базы данных, такие как SQL Server, также позволяют вам определять подобные хранимые процедуры.
Хранимая процедура уже готова к использованию, поэтому вам необходимо знать только ее имя: вы можете спокойно забыть обо всех тонкостях определения запроса с помощью программного кода. Еще важнее, что хранимые процедуры выполняются намного быстрее и более надежны при использовании в сети, чем эквивалентные инструкции SQL. Однако инструкции SQL для вашей хранимой процедуры не являются частью кода, а значит, вы не сможете при необходимости их изменять.
Настройка объекта Command
Для настройки объекта Command вам следует начать с объявления соответствующей переменной и создания собственно объекта. После этого вы можете использовать свойства объекта для связи его с подключением, для определения команд, которые должны выполняться в форме инструкции SQL или имени хранимой процедуры, а также для определения типа операции. После этого вы можете использовать метод Execute объекта Command для действительного выполнения команды. Ниже приведен пример инструкции обновления SQL.
Обратите внимание на свойство CommandType, которому вы должны присвоить значение adCmdText для передачи инструкции SQL источнику данных:
Dim consecrate As Connection
Dim cmdVBA As Command
Dim prmDate
( Connection...)
Set cmdVBA = New Command
With cmdVBA
.ActiveConnection = consecrate
.CommandText = _ "UPDATE Bicycles SET OnSale = True" _
& "WHERE Category = 4;"
.CommandType = adCmdText
.Execute
End With
Использование параметров команды
Если для выполнения команды требуются входные параметры (значения, передаваемые команде при выполнении, например диапазон данных или критерий поиска), вы должны определить индивидуальные объекты Parameter, добавляя их к коллекции Parameters объекта Command. Пример, приведенный ниже, иллюстрирует, как это все работает, и как можно использовать объект Command для выполнения хранимой процедуры, а не инструкции SQL:
Dim consecrate As Connection
Dim cmdVBA As Command
Dim prmDate
( Connection...)
Set cmdVBA = New Command
With cmdV3A
.ActiveConnection = consecrate
.CommandText = "qryDeleteOldRecords"
.CommandType = adCmdStoredProc ' in Jet, _
adCmdTable
End With
Set prmDate - New Parameter
With prmDate
.Name = "Date"
.Value = InputBox "Enter the cut-off date."
.Type = adDate