Министерство общего и профессионального образования РФ
Комсомольский-на-Амуре государственный технический университет
Факультет компьютерных технологий
Кафедра математического обеспечения и применения ЭВМ
Тихомиров В.А.
СПРАВОЧНЫЙЛИСТОК
по использованию основных функций
DAO в VBA
Комсомольск-на-Амуре, 1998 г.
1. Объявление объектов работы с данными
Dim Сеанс As WorkSpace ‘объект - сеанс работы
Dim МояБД As DataBase ‘объект - база данных
Dim Записи As RecordSet ‘ объект - набор записей
Dim Таблица As TableDef ‘ объект - таблица
Dim Запрос As QueryDef ‘ объект - запрос
Dim МояФорма As Form ‘ объект - форма
2. Открытие текущей базы данных
Set Сеанс = DBEngine.WorkSpaces(0)
Set МояБД = Сеанс.Databases(0)
или
Set МояБД = DBengine.WorkSpaces(0).Databases(0)
или
Set МояБД =CurrentDB
3. Открытие НЕ текущей базы данных Access
Set Сеанс = DBEngine.CreateWorkSpace(“НовыйСеанс”,”Управляющий”,””)
DBEngine.CreateWorkSpaces.Append НовыйСеанс
Set МояБД = НовыйСеанс.OpenDatabase(“NVIND.MBD”)
4. Открытие НЕ базы Access
(например - Paradox таблица - Capitan из каталога C:\PDX\SHIPS)
Set МояБД = DBengine.WorkSpaces(0).Databases(0)
Set Таблица = МояБД.CreateTableDef(“Корабли”)
Таблица.Connect = “Paradox 3.X; DATABASE = C:\PDX\SHIPS”
Таблица.SourceTableName = “Capitan”
МояБД.TableDefs.Append Таблица
Set Записи = Таблица.OpenRecordSet()
5. Открытие таблицы (получение набора записей)
‘ если “Клиенты” - имя таблицы
Set Записи = МояБД.OpenRecordSet(“Клиенты”, DB_OPEN_TABLE)
или
‘ если “ЗапросПоКлиентам” - имя запроса
Set Записи = МояБД.OpenRecordSet(“ЗапросПоКлиентам”)
или
Set Записи =МояБД.OpenRecordSet(“SELECT * FROM Клиенты ORDER BY [Клиенты]”)
или
Set Записи =Forms![Заказы].RecordSetClone
или
Set Запрос = МояБД.QueryDefs(“Клиенты из Одессы”)
Set Записи = Запрос. OpenRecordSet()
или
Set МояФорма = Screen.ActiveForm
Set Записи = МояФорма.Records
6. Сортировка
Записи.Index = “Клиенты”
или
Записи.Sort = “[Страна], [Телефон]”
Set СортЗаписи = Записи.OpenRecordSet()
сортировка в обратном порядке:
Записи.Sort = “[Страна] DESC”
Set СортЗаписи = Записи.OpenRecordSet()
или
Set Записи = МояБД.OpenRecordSet(“SELECT * FROM Клиенты ORDER BY [Клиенты]”)
7. Использование запросов
Set Запрос = МояБД.CreateQuryDef(“Все клиенты”, “SELECT * FROM Клиенты;”)
МояБД. QuryDefs.Append Запрос
Запрос.SQL = “UPDATE DISTINCTROW Товары SET Товары![Поставщик] = 2 WHERE Товары![Поставщик] = 1;”
Запрос.Execute
Запрос.Close
8. Перемещение по открытому набору записей
Методы перемещения: .MoveFirst
. MoveLast
. MoveNext - (дает ошибку .EOF после последней)
. MovePrevious - (дает .BOF после первой)
. Move
Пример1 - движение по записям и замена должности ДИРЕКТОР на ПРОДАВЕЦ:
Записи.MoveFirst
Do Until Записи.EOF
if Записи![Должность]=”Директор”Then
Записи.Edit
Записи!Должность = “Продавец”
Записи.Update
End If
Записи.MoveNext
Loop
Записи.Close
Пример 2 - определение числа записей в наборе
Записи.MoveLast
N = Записи.RecordCount
If N = -1 Then Debug.Print “Записей НЕТ”
9. Поиск записей методом Find (для динамических или статических НАБОРОВ)
Методы поиска: .FindFirst
. FindLast
. FindNext
. FindPrevious
Пример:
Критерий = “Должность = ‘Директор’”
Записи.FindFirst Критерий
Do Until Записи.NoMath
Записи.Edit
Записи!Должность = “Продавец”
Записи.Update
Записи.FindNext Критерий
Loop
10. Поиск записей методом Seek (для наборов записей типа ТАБЛИЦА)
Записи.Index = “Поставщик”
Записи.Seek “=”, 1
Do Until Записи.NoMath
Записи.Edit
Записи(“Поставщик”) = 2
Записи.Update
Записи.Seek “=”, 1
Loop
или, если имеется составной ключ из двух полей (СоставнойИндекс):
КодЗаказа = 9
КодТовара = 45
Записи.Index = “СоставнойИндекс”
Записи.Seek “=”, КодЗаказа, КодТовара
11. Работа с записями
Применяемые функции: .Delete - удаление
.Edit- редактирование
.AddNew - добавление новой записи
.Update- обновление набора записей
.Close- закрытие набора
12. Применение транзакций
Сеанс.BeginTrans
Do Until Записи.NoMath
Записи.Edit
Записи!Должность = “Продавец”
Записи.Update
Записи.FindNext Критерий
Loop
If MsgBox “Сохранить изменения?” = YES Then
Сеанс.CommitTrans
Else
Сеанс.RollBack
End If
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.