Статический курсор с последовательным доступом не позволяет изменять, добавлять и удалять записи и не отображает изменения, сделанные другими пользователями. Он обеспечивает перемещение по записям только вперед. Этот курсор создается по умолчанию.
Курсор с доступом по ключу поддерживает изменение, удаление и добавление записей, обеспечивает перемещение по записям в двух направлениях, но не позволяет пользователю видеть записи, добавленные или удаленные другими пользователями.
Динамический курсор поддерживает изменение, удаление и добавление записей, обеспечивает перемещение по записям в двух направлениях, позволяет пользователю видеть изменения, сделанные другими пользователями.
Статический курсор не позволяет изменять записи и не отображает изменения, сделанные другими пользователями. Обеспечивает перемещение по записям в двух направлениях.
Листинги 5.28 и 5.29 демонстрируют разные варианты создания объекта Recordset. В первом примере создается набор записей только для просмотра (определяется типом блокировки). Источником данных является инструкция SQL, а соединение задается с помощью аргумента ActiveConnection. Объект Connection при этом создается неявно. Аргументы метода являются именованными, то есть сначала пишется имя аргумента, а затем значение фактического параметра. В этом случае не имеет значения порядок ввода параметров. С другой стороны, возможен и стандартный способ передачи аргументов по положению в списке аргументов.
Листинг 5.28. Создание объекта Recordset с помощью метода Open
Dim rst As ADODB.Recordset
Dim strConnect As String
Dim strSQL As String
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=C:\Библиотека.mdb;"strSQL = "SELECT * _
FROM Авторы WHERE КодАвтора = " _
& Forms!Издания!КодАвтора
Set rst = New ADODB.Recordset
With rst
.LockType = adLockReadOnly 'указываем тип блокировки
'создаем Recordset, передавая три аргумента
.Open Source:= strSQL, ActiveConnection:= strConnect, _
Options:= adCmdText
End With
ПРИМЕЧАНИЕ Использование аргумента Options метода Open позволяет ускорить выполнение команды, так как этот аргумент явно указывает тип источника данных. В противном случае придется обращаться к провайдеру, чтобы выяснить, как интерпретировать значение параметра <источник>.
Если предполагается использовать несколько объектов Recordset, то, чтобы не создавать отдельного соединения на каждый объект Recordset, нужно объект Connection создать явно. В следующем примере источником данных является таблица Читатели, на основе которой строится динамический набор записей (курсор с доступом по ключу). Таблица Читатели присоединена к текущей базе данных. Перед тем как открыть объект Recordset, явно создается соединение с базой данных (объект Connection).
Листинг 5.29. Создание объекта Recordset на базе таблицы (ADO)
Dim cnn As ADODB.Connection, rst As ADODB.Recordset
Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset
With rst
.ActiveConnection = cnn
.CursorType = adOpenKeyset
.Open Source:= "Читатели"
End With
В следующем примере (листинг 5.30) источником данных для объекта Recordset является объект Command. Перед тем как передавать ссылку на объект Command в аргумент метода Open, устанавливается свойство ActiveConnection этого объекта.
Листинг 5.30. Создание объекта Recordset на базе объекта Command (ADO)
Dim cmd As Command
Dim rs As Recordset, str As String
'создаем объект Command
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = CurrentProject.Connection
.CommandText = "SELECT Авторы.* FROM Авторы"
.CommandType = adCmdText
End With
'открываем объект Recordset
Set rs = New ADODB.Recordset
rs.Open cmd
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.