Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Е.А. Бессонов Access. Объекты доступа к данным

.pdf
Скачиваний:
57
Добавлен:
19.08.2013
Размер:
259.46 Кб
Скачать

Министерство образования Российской Федерации Государственное учреждение

Кузбасский государственный технический университет Кафедра вычислительной техники и информационных технологий

ACCESS

Объекты доступа к данным

Методические указания к лабораторной работе для студентов специальности “Экономика и управление на предприятиях ” по курсу “Автоматизация экономических расчетов ”

Составитель Е.А. Бессонов

Утверждены на заседании кафедры Протокол № 10 от 26.06.01

Рекомендованы к печати учебнометодической комиссией специальности

060800

Протокол № 1 от 27.09.01

Электронная копия хранится в библиотеке главного корпуса ГУ КузГТУ

Кемерово 2002

1

Введение

Одним из компонентов MS Access является ядро базы данных Jet, которое содержит 31 объект, называемый объектами доступа к данным DAO (Data Access Objects). Объекты Jet обладают свойствами и методами и могут (кроме DBEngine) образовывать семейства однотипных объектов.

Спомощью объектов DAO можно:

-создавать базы данных, изменять структуру их таблиц, запросов, индексов и связей;

-реализовывать защиту данных;

-работать с базами данных различных типов и связывать таблицы из других баз данных со своей базой;

-подключаться к базам данных на удаленных серверах и разрабатывать клиент-серверные приложения.

Объекты DAO являются существенным дополнением к объектам

MS Access (Application, Form, Control, Report, Screen, Err, Debug). Пред-

полагается, что читатель знаком с методическими указаниями по Access “Запросы на языке SQL”, “Пользовательские функции” и “Объекты и события”.

Все необходимые команды встроены во внутренний код MS Access. Команды пользователя, передаваемые через интерфейс, преобразуются автоматически в программы, манипулирующие объектами DAO. Возможность обращаться к Jet напрямую расширяет возможности автоматизации обработки информации. Можно работать, например, с записями источников записей формы без открытия формы. Это ускоряет обработку, поскольку не требуется время на перерисовку формы на экране.

Jet – независимый от приложений механизм. Он лишь предоставляет свои объекты доступа к данным с их методами и свойствами про- граммам-клиентам. В качестве клиента может выступать не только Access, но и некоторые другие приложения MS Office. Объектами баз данных можно, например, управлять из MS Excel.

Объекты DAO составляют иерархическую структуру, изображенную на рисунке. На модели не представлены семейства Properties, принадлежащие всем объектам, кроме Errors.

Модель отображает только семейства. Исключение составляет объект DBEngine, не входящий ни в какие семейства. Каждое семейство включает соответствующие объекты. Так, например, семейство

2

QueryDefs (запросы) содержит объекты типа QueryDef (запрос). Семейства также являются объектами и имеют свои методы и свойства.

DBEngine

___Errors

___WorkSpaces __Databases

__Containers____Documents __QueryDefs____Fields

|__Parameters __RecordSets____Fields __TableDefs_____Fields

|__Indexes

__Groups___Users __Users_____Groups

Рис. 1. Иерархия объектов DAO

Ссылка на объекты

Ссылка на любой объект содержит путь от вершины дерева (DBEngine) до данного объекта. Для разделения объектов и семейств используются точки, а для перехода от семейства к одному из ее элементов можно использовать один из четырех вариантов.

Семейство!Имя_Объекта Семейство(“Имя объекта”) Семейство(Переменная) Семейство(j)

Восклицательный знак позволяет задавать имя объекта без кавычек. В круглых скобках можно указать имя переменной, содержащей имя объекта. Вместо имени допускается использовать порядковый номер j объекта в семействе. Нумерация объектов в семействе осуществляется автоматически, начиная с 0.

Пример

MsgBox DBEngine.WorkSpaces(0).Databases(0).OpenRecordset! _

Преподаватели.Fields(“Фамилия”)

Workspaces – Семейство рабочих пространств или сеансов. В каждом рабочем пространстве можно открыть базу данных. Нулевое рабочее пространство создается автоматически. Дополнительные сеансы нужно

3

создавать в программе.

Databases – семейство открытых баз данных. Нулевая база данных создается автоматически в нулевом рабочем пространстве.

В приведенном примере содержимое поля (Field) “Фамилия” таблицы (набора данных) “Преподаватели” выводится в диалогом окне. Пример содержит 3 точки. Каждая точка является оператором, на выполнение которого затрачивается некоторое время. Сократить длину инструкций и ускорить их выполнение позволяют объектные переменные.

Пример

Dim db As Database Dim R As RecordSet

Set db = DBEngine.Workspaces(0).Databases(0) Set R = db.OpenRecordset(“Преподаватели”) MsgBox R.Fields(“Фамилия”)

Пример выполняет то же действие, что и предыдущий. Объектные переменные обычно используются многократно, и это

оправдывает их применение.

Типы объектов DAO

Объекты DAO делятся на постоянные и непостоянные. Постоянные объекты сохраняются в файлах .mdb (базы данных)

или .mda (информация о группах и пользователях). К постоянным объ-

ектам относятся Database, TableDef, Index, QueryDef, Parameter, Relation, User, Group, Field для TableDef и QueryDef, Property постоян-

ного объекта.

Непостоянные объекты уничтожаются при выходе из процедуры, в которой они созданы. К непостоянным объектам относятся все семей-

ства, Property непостоянного объекта, DBEngine, Error, Container, Document, RecordSet и Field для RecordSet.

Для того чтобы обратиться к существующему постоянному объекту, его нужно открыть методом Open. В иных случаях необходимо создать новый объект

Создание новых объектов

Создание нового объекта осуществляется в 3 этапа. o Создание объекта методом Create.

o Присвоение свойств.

4

o Добавление объекта к семейству. Пример

Dim db As Database, Список As TableDef Dim Профессия As Field

Set db = DBEngine.WorkSpaces(0).Databases(0) Set Список = db.CreateTableDef (“Список”)

Set Профессия = Список.CreateField (“Профессия”, Db_Text)

Список.Fields.Append Профессия

Db.TableDefs.Append Список

В примере используются объектные переменные db, Список и Профессия. Первый оператор Set создает ссылку на текущую базу данных. Она имеет порядковый номер 0 и создается автоматически. Автоматически создается и текущий сеанс работы, также имеющий порядковый номер 0. Можно создать еще несколько сеансов работы и открыть в каждом из них БД. В интерактивном режиме можно открыть только одну БД.

Второй оператор Set с помощью метода CreateTableDef объекта Database создает таблицу и присваивает ей имя “Список”. Переменная Список теперь содержит ссылку на эту таблицу.

Последний оператор Set с помощью метода CreateField объекта TableDef создает поле с именем “Профессия” (первый аргумент метода) текстового типа. Тип задан константой Db_Text во втором аргументе метода.

Следующая и предпоследняя инструкция – вызов метода Append семейства Fields. Метод добавляет (включает) поле Профессия в семейство полей (Fields) таблицы Список. Последняя инструкция рассматриваемого фрагмента программы добавляет с помощью метода Append новую таблицу в семейство TableDefs таблиц.

После выполнения всех инструкций в окне БД появляется таблица Список, имеющая единственное текстовое поле Профессия. Подобным образом можно создать таблицу с произвольным количеством полей различного типа. Можно создавать базы данных методом

CreateDatabase, запросы методом CreateQueryDef. Если существует на-

бор данных типа RecordSet, перед использованием его следует открыть с помощью метода OpenRecordset.

Для эффективного использования многочисленных объектов, методов и свойств необходимо активно использовать справочную систему

NS Access.

5

Справочная система

Команда Справка|Содержание|Программирование позволяет получить различные сведения о программировании. Здесь, например, можно узнать о редакторе Visua Basic, о работе с макросами, событиями, модулями. Раздел “Справочник по языку Visual Basic Microsoft Access” содержит макрокоманды, объекты и семейства, методы, свойства, функции, инструкции, события и константы.

Объекты Dao удобно рассматривать в окне Обозревателя объектов (рис.2), которое можно открыть командой Вид|Обозреватель объектов или клавишей F2.

Рис.2. Окно обозревателя объектов

Окно Обозревателя объектов состоит из нескольких списков (Рис.2), обеспечивающих трехуровневое представление информации. Раскрывающийся список Проект/Библиотека в левом верхнем углу окна содержит перечень всех библиотек, на которые есть ссылки. В окне Сервис|Ссылки следует флажком отметить библиотеку DAO (установить на DAO ссылку). При выборе из списка в окне Обозревателя объектов нужной библиотеки, например DAO, в левом поле Classes отображается список следующего уровня – перечень всех объектов, входящих в эту библиотеку. Выбрав один из них, например RecordSet, в правом поле Members Of можно увидеть все методы и свойства этого объекта. В нижней части окна, называемой областью описания, отображается краткое описание выбранного элемента.

Ниже приводится краткая характеристика некоторых объектов

6

DAO и их важнейших свойств и методов.

DBEngine

DBEngine является объектом самого высокого уровня в иерархии DAO и используется для представления самого ядра Jet базы данных. DBEngine содержит семейство WorkSpaces (WorkSpace - сеанс или ра-

бочее пространство) и метод CreateWorkspace создания рабочего пространства, а также метод CompactDatabase для уплотнения базы данных.

WorkSpace

Вядре базы данных Jet объект WorkSpaсe используется в основном для обеспечения защиты. Система защиты устанавливается с помощью создания рабочей группы, которая управляется специальным системным файлом. С помощью методов WorkSpace можно создавать объекты User (пользователь) и Group (группа) для пользователей и групп с различными полномочиями, определенными в текущей рабочей группе. Методом CreateDatabase можно создать базу данных , а OpenDatabase – открыть существующую. В рабочем пространстве можно использовать транзакции.

Часто для обеспечения целостности данных требуется рассматривать определенный набор операций как одну неразрывную группу. Например, перевод денег с одного банковского счета на другой состоит из двух операций: удаление денег с одного счета и добавление такой же суммы денег на другой счет. На практике, однако, либо обе операции должны завершиться успешно, либо ни одна из них не должна быть выполнена.

Вданной ситуации обе операции объединяются в одну группу, называемую транзакцией. В MS Access транзакция определяется как набор операций, результат которых подтверждается (сохраняется) в том и только в том случае, если все операции набора прошли успешно. Если какая-либо из операций транзакции не выполнена, то все выполненные ранее операции отменяются, и данные возвращаются к тому состоянию, которое они имели до начала выполнения транзакции. Чтобы начать транзакцию, надо выполнить метод сеанса BeginTrans. Транзакции группируют связанные по смыслу операции таким образом, что внесенные изменения хранятся в буфере памяти до вызова одного из методов CommitTrans (завершение транзакции) или RollBack (откат).

7

Database

Объект Database представляет открытую базу данных, в которой можно выполнять разнообразные операции. База данных может быть не только файлом .mdb программы Access, но и базой данных, созданной рядом других приложений. Большинство операций DAO производится через объект Database или подчиненные ему объекты (семейства

Containers, QueryDefs, RecordSets, Relations, TableDefs). С помощью ме-

тодов можно создать свойство (CreateProperty), запрос

(CreateQueryDef), отношение между таблицами (CreateRelation), описа-

ние таблицы (CreateTableDef). Метод Execute позволяет выполнить существующий запрос, а OpenRecordSet – открыть существующий набор данных.

QueryDef

Объект QueryDef является постоянным объектом, который используется для хранения операторов запроса в файле БД. К методам относятся CreateProperty (создать свойство), OpenRecordSet (открытие набора данных, порождаемого запросом), Execute (выполнить запрос). Для запросов можно создавать параметры (семейство Parameters).

TableDef

Для ссылки на таблицы внутри объекта Database, то есть на локальные таблицы, хранимые в mdb-файле, либо на связанные таблицы во внешних базах данных используются объекты TableDef. Объект TableDef используется для изменения структуры таблиц в базе данных, а не для чтения или изменения данных внутри таблиц. Для чтения и изменения данных используется объект RecordSet. С помощью объекта TableDef можно создавать объекты Field и Index, обновлять связи с таблицами из внешних баз данных, устанавливать ограничения на значения для добавляемых в таблицу полей, определять количество записей в таблице.

TableDef содержит семейства Fields и Indexes, а также методы

CreateField (создать поле), CreateIndex (создать индекс), CreateProperty (создать свойство), OpenRecordset (открыть набор данных).

8

Field

Для обращения к полям объектов TableDef, QueryDef, Index, Relation и Recordset используется объект Field. В объектах TableDef, Index и Relation объект Field применяется для установки или изменения структуры таблиц, а также для установки индексов и зависимостей. В объекте RecordSet объект Field используется для выборки и обновления отдельных полей записи в наборе данных.

Index

Объект Index используется для указания порядка записей в объектах TableDef и того, могут ли вводиться повторяющиеся записи.. DAO использует Index при соединении таблиц в момент создания объектов RecordSet из нескольких таблиц. Следует отметить, что Index влияет на сортировку записей только в объектах RecordSet табличного типа. При этом он не влияет на реальное упорядочение записей в объекте TableDef. Записи в объекте TableDef упорядочиваются в соответствии с последовательностью их добавления в объект.

Recordset

С помощью объекта RecordSet можно извлекать, добавлять, изменять и удалять отдельные записи из одной таблицы или связанные записи из нескольких таблиц. Набор записей может относиться к типу Table (таблица), Dynaset (динамический набор) или SnapShot (статический набор).

Табличные наборы используются для доступа к записям в таблице, хранимой в mdb-файле. С помощью табличных наборов можно извлекать, добавлять, обновлять и удалять записи в отдельной таблице.

Динамические наборы применяются для доступа к записям в таблице, хранимой в mdb-файле или связанной с ним. Динамические наборы используются также для доступа к записям, которые являются результатом выполнения запроса. С помощью этих наборов можно извлекать, добавлять, обновлять и удалять записи, как в отдельной таблице, так и в нескольких в соответствии с определением запроса.

Статические наборы подобны динамическим в том смысле, что они используются для доступа к записям в локальной таблице, связанной таблице или в запросе. Отличие состоит в том, что они используются только для чтения данных, а запросы на изменение (добавление, удале-

9

ние, обновление записей) выполнены быть не могут. Динамический набор содержит ссылки на записи в таблице, а статический набор содержит копии записей. При однонаправленном просмотре записей наилучшую производительность обеспечивают статические наборы записей с последовательным доступом (Forward-only).

Объект RecordSet обладает семейством Fields, которое обеспечивает доступ к отдельным полям записи, и множеством методов, которые позволяют создавать новые записи (AddNew), уничтожать существующие (Delete), обновлять (Edit, Update), создавать копии набора (Clone),

искать запись (Seek, FindFirst, FindLast, FindNext, FindPrevious), перемещаться по записям (Move, MoveFirst, MoveLast, MoveNext, MovePrevious). Объект RecordSet создается методом OpenRecordSet, а

закрывается методом Close. Метод ReQuery обновляет набор. Отметим наиболее распространенные свойства объекта RecordSet.

BOF. Указатель записи находится перед первой записью или набор пуст. Если в этой ситуации применить метод FindPrevious или MovePrevious, возникает ошибка.

EOF. Указатель записи находится после последней записи набора. Попытка применить метод MoveNext или FindNext приводит к ошибке. BookMark. Закладка, являющаяся строкой текста. Она однозначно идентифицирует текущую запись. Значение закладки можно запомнить в текстовой переменной и впоследствии присвоить свойству BookMark формы. В форме текущей снова становится отмеченная ранее запись. Filter. Задает или возвращает строковое выражение, которое используется для отбора записей объекта RecordSet динамического или статического типа. При задании фильтра используется предложение WHERE языка SQL без ключевого слова WHERE. Названия полей объекта RecordSet заключаются в квадратные скобки. Для того чтобы фильтр заработал, нужно открыть новый объект RecordSet на основе того объекта, для которого установлен фильтр.

Index. Задает имя индекса для объекта RecordSet табличного типа. Это позволяет использовать в объекте RecordSet метод Seek для отыскания записей, удовлетворяющих заданному критерию.

LastModified. Возвращает закладку последней записи, модифицированной в объекте RecordSet

Name. Имя источника (единственного) для объекта RecordSet, то есть имя таблицы, объекта QueryDef или первые 256 символов строки инструкции SQL, формирующей объект. Устанавливается методом