Справочный листок по использованию основных функций DAO в VBA

Страницы работы

Содержание работы

Министерство  общего  и  профессионального  образования  РФ

Комсомольский-на-Амуре государственный технический университет

Факультет компьютерных  технологий

Кафедра  математического обеспечения  и  применения ЭВМ

                                                                                                                                  Тихомиров В.А.

СПРАВОЧНЫЙЛИСТОК

 по использованию основных  функций

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

Похожие материалы

Информация о работе

Тип:
Дополнительные материалы
Размер файла:
39 Kb
Скачали:
0