Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_работа_1.doc
Скачиваний:
22
Добавлен:
11.03.2016
Размер:
329.22 Кб
Скачать
  1. Контрольные вопросы

  1. Сформулируйте назначение, свойства и характеристики СУБД Access.

  2. Перечислите основные элементы интерфейса пользователя Access 2007.

  3. Что такое реляционная модель данных? Каковы её особенности?

  4. Как создается таблица данных в среде Access?

  5. Перечислите и охарактеризуйте типы данных полей Access.

  6. Объясните, что означают свойства полей: “маска ввода”, “подпись”, ”формат поля”, «условие на значение»?

  7. Как осуществляется добавление, удаление и изменение последовательности полей?

  8. Для чего и как создается поле подстановок в таблицах данных?

  9. Что означает потенциальный ключ, первичный ключ, внешний ключ таблицы?

  10. Как устанавливается ключевое поле и индексы таблицы в Access?

  11. Что такое индекс таблицы? Для чего необходимы индексы? Как можно выполнить просмотр и установку индексов?

  12. Как можно создать индекс в модели DAO VBA?

  13. Каковы преимущества индексированного поиска? Объясните, как программно можно произвести индексированный поиск?

  14. Объясните смысл понятия «целостность данных». Как обеспечивается контроль целостности данных в Access?

  15. Охарактеризуйте типы связей между таблицами БД. Как связываются таблицы в Access? Продемонстрируйте установку и удаление связей.

  16. Продемонстрируйте просмотр записей таблицы с использованием фильтра.

  17. Как можно добавить и удалить записи из таблицы Access, используя средства интерфейса и программно?

Рекомендуемая литература

  1. Рудикова Л.В. Базы данных. Разработка приложений. – СПб.: БХВ - Петербург, 2006. – 496 с.

  2. Тимошок Т.В. Microsoft Office Access 2007. Самоучитель. Изд-во «Диалектика», 2008. - 464 с.

  3. Харитонова И., Вольман Н. Программирование в Access 2002: учебный курс. – СПб.: Питер, 2002. – 480 с.

  4. Глушаков С. В. Microsoft Access 2007. Лучший самоучитель. /С.В. Глушаков, А.С. Сурядный, М.И. Шумилов. - М.: АСТ МОСКВА, 2008. - 444 с.

  5. Коннолли Т., Бегг К. Базы данных. Проектирование, реализация и сопровождение. Теория и практика, 3-е изд.: Пер. с англ.: Уч. Пос. – М.: Издательский дом «Вильямс», 2003. – 1440 с.

Приложение 1. Краткие исходные сведения по языку VBA

Для программирования в MS Access используется процедурный язык Visual Basic for Application (VBA) с включением в него библиотек объектов и языка SQL Jet. Язык VBA является объектно-ориентированным языком с поддержкой модели программирования, ориентированной на обработку событий, происходящих в процессе работы пользователя с приложением. Подробные сведения по программированию на языке VBA в Access изложены в специальной литературе, например, в [3], [4].

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

Для объявления переменной обычно используется оператор Dim с синтаксисом

Dim <имяПеременной> [As<типДанных>] [,<имяПеременной >[As <типДанных>]]. Типы данных (data type) и операции VBA описаны в справочной системе (Справка Microsoft Visual Basic).

Объект- это экземпляр определенного класса. Класс в VBA программируется в виде модуля класса. При этом в разделе объявлений описываются свойства класса, а потом определяются методы класса. Примерами объектов Access являются таблицы, поля, формы, отчеты, запросы и др. Свойство – это характеристика объекта, которая может принимать определенное значение. Синтаксис установки значения свойства: объект.свойство = выражение. Метод представляет собой процедуру или функцию, предназначенную для изменения поведения объекта. Синтаксис метода: объект.метод, например, вызов форма1.Refresh обновляет данные в форме1. Событие – это действие или изменение, связанное с объектом. Например, щелчок мыши, сигнал таймера и др. Для любого события объекта может определяться процедура его обработки.

Упорядоченный набор объектов одинакового типа – экземпляров одного класса – образует семейство, которое тоже является объектом. Объекты и семейства VBA образуют объектные модели. Например, объект Application (исходный объект в иерархии объектов, предоставляющий доступ к остальным объектам) содержит семейство Forms, которое состоит из объектов – форм Form. Любой объект формы Form содержит семейство Controls, состоящее из объектов Control (элемент управления, например текстовое поле, кнопка и др.).

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

Application.CurrentProject.AllForms(“Сотрудники”) является ссылкой на объект – форму Сотрудники. В скобках указывается имя объекта семейства или его индекс. Для разделения имени семейства и имени объекта может использоваться также восклицательный знак. Например,

Forms![Заказы]![Код Заказа] есть ссылка на элемент управления Код заказа в открытой форме Заказы семейства Forms. Объект Application представляет собой ссылку на активное приложение Access.

В состав MS Access включено несколько библиотек объектов, основными из которых являются следующие:

  • Библиотека объектов Microsoft Access (Microsoft Access 12.0 Object Library);

  • Библиотека объектов доступа к данным (Microsoft DAO 3.6 Object Library);

  • Библиотека объектов ActiveX (Microsoft ActiveX Data Objects 2.1 Library);

  • Расширения ADO для поддержки DDL и защиты информации (Microsoft ADO Extensions 2.8 for DDL and Security);

  • Библиотека объектов Microsoft Jet и репликации (Microsoft Jet and Replication Objects 2.6 Library).

В данной лабораторной работе в программах доступа к данным используется только объектная модель DAO (Data Access Objects). Модель ADO не рассматривается и не используется в связи с ограниченным ресурсом времени. Подключение библиотеки классов Microsoft DAO 3.6 Object Library перед её использованием производится при помощи команды меню Tools| References.

Приложение 2. Создание индекса

В объектной модели DAO для создания индекса таблицы используется метод CreateIndex объекта TableDefs. После создания объекта Index необходимо добавить индексируемое поле (для составного индекса - поля) в семейство Fields объекта Index, а затем добавить объект Index в семейство Indexes объекта TableDef.

В листинге 1 представлен пример создания индекса для таблицы Усилители.

Листинг 1.

' Процедура создания индекса, модель DAO

Sub CreateIndex()

' Объявление объектных переменных и их инициализация

Dim db As Database, td As TableDef, fld As Field

Dim idx As Index

Set db = CurrentDb

Set td = db.TableDefs("Усилители")

With td

'Создание индекса

Set idx = .CreateIndex("Усиление")

With idx

.Fields.Append .CreateField("Коэф_усиления ")

End With

'Добавление индекса в семейство Indexes объекта TableDef

.Indexes.Append idx

End With

db.Close

End Sub

Приложение 3. Поиск записей

При поиске нужных записей для объектов типа Recordset может использоваться группа методов Find и метод Seek. Метод Seek является более быстрым, так как основан на применении индексов таблиц.

В объектной модели DAO имеется четыре метода, относящиеся к группе Find:

  • FindFirst – определяется первая запись, удовлетворяющая условиям поиска,

  • FindLast - определяется последняя запись, удовлетворяющая условиям поиска,

  • FindNext – определяется следующая запись, удовлетворяющая условиям поиска,

  • FindPrevious - определяется предыдущая запись, удовлетворяющая условиям поиска.

Единственный аргумент каждого из этих методов задает условия поиска.

В листинге 2 приведен пример поиска с помощью метода FindFirst. Условия поиска задаются в окне InputBox, результаты поиска в примере выводятся в окно сообщений Immediate.

Листинг 2.

Function FindChip()

Dim db As Database, rs As DAO.Recordset, i As Integer, idOU As Long

Set db = CurrentDb

Set rs = db.OpenRecordset("Усилители", dbOpenSnapshot)

'ищем первую запись по заданному критерию

idOU = Trim(InputBox("Введите значение коэффициента усиления "))

rs.FindFirst "Коэф_усиления > " & idOU

'если не нашли, то выходим из функции

If rs.NoMatch Then

MsgBox " Такие микросхемы отсутствуют "

Exit Function

Else

Debug.Print " Микросхема " & " " & rs.Fields("Тип") & " " _

& " К-т усиления = " & rs.Fields("Коэф_усиления")

Do Until rs.EOF

rs.FindNext " Коэф_усиления > " & idOU

If rs.NoMatch = False Then

Debug.Print " Микросхема" & " " & rs.Fields("Тип") & " " _

& " К-т усиления = = " & rs.Fields("Коэф_усиления ")

End If

rs.MoveNext

Loop

End If

rs.Close

db.Close

Set rs = Nothing

Set db = Nothing

End Function

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

<таблица>.Seek <сравнение> ,<ключ1>, <ключ2>,…

Аргумент <сравнение> представляет собой один из операторов сравнения: =, >, >=, < , <=. В аргументах <ключ> указываются значения, которые необходимо найти.

В листинге 3 представлен пример индексного поиска в таблице «Усилители». Ввод условия поиска выполняется через окно InputBox, вывод результата поиска осуществляется в окно MessageBox.

Листинг 3.

' Пример быстрого (индексного) поиска с помощью

' метода Seek для объектов Recordset

Private Sub SeekMkch()

Dim db As Database, td As TableDef, Gain As Long, rs As Recordset

Set db = CurrentDb

' Создание объекта Recordset

Set rs = db.OpenRecordset("Усилители", dbOpenTable)

' Установка активного индекса, соответствующий индекс должен существовать

rs.Index = "Усиление"

Gain = Trim(InputBox("Введите значение коэффициента усиления"))

rs.Seek ">", Gain

' вывод результата поиска

If rs.NoMatch Then

MsgBox "Такой микросхемы нет!"

Else

MsgBox ("Найден Тип " & rs.Fields("Тип") & " " _

& "Коэффициент усиления = " & rs.Fields("Коэф_усиления "))

' Вариант вывода в окно Immediate , команда меню View | Immediate Window

' Debug.Print "Микросхема" & " " & rs.Fields("Тип") & " " _

' & "К-т усиления = " & rs.Fields("Коэф_усиления ")

End If

rs.Close

db.Close

End Sub

Приложение 4. Добавление, изменение и удаление записей

В модели DAO для изменения текущей записи используется метод Edit объекта Recordset, производятся нужные изменения и затем вызывается метод Update для сохранения изменений. Соответствующий пример приведен в листинге 4.

Листинг 4.

'Изменение записи в таблице "Заказчики"

Sub UpdateRecord()

Dim rs As Recordset

Set rs = CurrentDb.OpenRecordset("Заказчики")

rs.MoveFirst

Do Until rs.EOF

If rs.Название = "Отдел 2" Then

rs.Edit

rs.КонтактноеЛицо = "Киселев М.С."

rs.Update

End If

rs.MoveNext

Loop

rs.Close

End Sub

Добавление новой записи осуществляется с помощью метода AddNew объекта Recordset. Далее присваиваются значения всем или обязательным полям и методом Update сохраняются данные. Пример программы представлен в листинге 5.

Листинг 5.

' Добавление новой записи с помощью метода AddNew

Sub CreateNewRecord()

Dim dbs As Database, rstCustomer As Recordset

' Открытие базы данных

Set dbs = CurrentDb

'Создание переменной типа Recordset (набор записей), представляющей таблицу ‘ "Заказчики"

Set rstCustomer = dbs.OpenRecordset("Заказчики")

' Создание новой записи

rstCustomer.AddNew

' Ввод значений в поля

rstCustomer!Название = "Отдел 4"

rstCustomer!КонтактноеЛицо = "Дмитриев Р.В."

rstCustomer!НомерТелефона = "21-74-68"

' Сохранение новой записи методом Update

rstCustomer.Update

dbs.Close

End Sub

Удаление текущей записи производится методом Delete. Удаляемую запись нужно сделать текущей. Пример:

Листинг 6.

' Пример удаления записи из таблицы "Заказы"

Sub DeleteRecord()

Dim rs As Recordset

Set rs = CurrentDb.OpenRecordset("Заказы")

Do Until rs.EOF

If rs.КодЗаказа = 2 Then

rs.Delete

End If

Loop

End Sub

Составил доц. Щетинин Ю.И.

12

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]