Слайд 2
Запросы к базе данных: Объект QueryDef
Создание объекта QueryDef
программным путем и его выполнение.
Dim MyQdf As QueryDef
Dim strSQL
As String
strSQL = “SELECT … FROM … “
Set MyQdf = MyDbs.CreateQueryDef(“имя_запроса”, strSQL)
Слайд 3
Свойства объекта QueryDef:
Connect - сведения о внешнем источнике;
используется для SQL-запросов к БД с ядром, отличным от
ядра Ms Jet. Если свойство задано, запрос передается на сервер внешней БД в обход Ms Jet;
Name - имя запроса;
SQL - оператор SQL, представленный выражением типа String;
Type - тип запроса; например:
dbQAction - запрос на изменение,
dbQAppend - запрос на добавление записи,
dbSelect - запрос на выборку,
Слайд 4
Объект Recordset и коллекция Recordsets
Объект Recordset представляет набор
записей БД.
Коллекция Recordsets включает все открытые объекты Recordset.
В
DAO выделяют 5 типов объектов Recordset:
табличный (Table) - только в Jet;
динамический набор (Dynaset);
статический набор (SnapShot);
статический набор с последовательным доступом (Forward-only);
динамический тип (Dynamic) - только в ODBCDirect. Тип объекта указывается в методе OpenRecordset для открытой БД.
Слайд 5
Табличный объект: Представляет таблицу в БД. Все записи
и поля этой таблицы включаются в объект Recordset, созданный
на ее основе. Далее объект можно использовать для добавления, удаления и модификации записей таблицы.
Динамический набор: Представляет результат выполнения запроса по одной или нескольким таблицам. Позволяет добавлять, удалять и модифицировать записи.
Статический набор: Данные нельзя модифицировать.
Статический набор с последовательным доступом: Идентичен статическому набору, но его записи можно просматривать только в одном направлении - от начала к концу. В каждый момент существует только одна текущая запись. Поэтому не могут быть использованы такие методы, как например, MoveLast, MoveFirst. Достоинством типа является очень быстрый просмотр записей.
Динамический тип: Ведет себя аналогично объекту типа Dynaset, но при модификации таблиц, лежащих в основании запроса, автоматически обновляется.
Слайд 6
Примеры использования
Dim db As Database
Dim qdf As QueryDef
Dim
rst As Recordset
‘ Открытие БД, переменная db
Set db=
OpenDatabase(strPathDb)
‘ Набор записей - результат выполнения запроса
Set rst = db.OpenRecordset(“имя_запроса”)
‘ Набор записей - результат выполнения запроса
Dim strSQL As String
strSQL = “SELECT … FROM …”
Set rst = db.OpenRecordset (strSQL, dbOpenDynaset, dbReadOnly)
‘ Набор записей - тело таблицы
Set rst = db. OpenRecordset(“имя_таблицы”)
Слайд 7
Добавление записи в БД
Set rst = db. OpenRecordset(“имя_таблицы”)
With
rst
.AddNew
‘Построение записи
! = Range(“…”)
! = Range(“…”)
…
!
= Range(“…”)
.Update
End With
Слайд 8
Формирование списка значений по записям одного поля
Do While
Not rst.EOF
.AddItem rst!
rst.MoveNext
Loop
.Show
Слайд 9
Запросы с параметрами
Параметр запроса представляет объект Parametr.
Коллекция Parametrs
включает все объекты Parametr, определенные для объекта QueryDef.
Замечание:
Указание параметров
позволяет не использовать при построении SQL-запроса конкретные значения полей для выборки записей.
Синтаксис описания:
PARAMETRS [<имя_параметра>]<тип_данных> [, [<имя_параметра>] <тип_данных> , …]
Пример Выбрать записи о сотрудниках, родившихся «ОТ» … «ДО», где «ОТ» и «ДО» - параметры соответствующего типа. Значение этих параметров указывается при выполнении запроса.
Слайд 10
Dim db As Database
Dim qdf As QeryDef
Dim rec
As Recordset
Dim strSQL As String
…
strSQL = “PARAMETERS [Родился-С] Date_Time,”
& “[Родился-По] Date_Time;” _
“SELECT * FROM Сотрудники “ & “WHERE (ДатаРождения Between[Родился-С]” _
& “AND [Родился-По]);”
‘Создание нового объекта QeryDef
Set qdf = db.CreateQueryDef(“О_датах_рождения”, strSQL)
‘Задание значений параметрам
qdf. Parametrs ! [Родился-С] = #1/1/57#
qdf. Parametrs ! [Родился-По] = #12/31/67#
Set rst = qdf.OpenRecordset