Практикум по Microsof access

Практические рекомендации по реализации проекта на Access.

Подпись:  

Рис. 5.
 При разработке проекта, прежде всего, следует тщательно разработать концептуальную схему, обеспечивая пребывание ее в третьей нормальной форме. Затем разобрать, какие из таблиц можно заполнять независимо от других, и какие из них следует заполнять, используя данные других таблиц. В примере, разобранном в § 4 независимо можно заполнять таблицы «Актер» и «Пьеса». Таблица «Роль» заполняется, используя данные из таблицы «Пьеса», а таблица «Спектакль» - «Актер» и «Роль». Для заполнения таблиц «Актер» и «Пьеса» можно построить форму с помощью мастера форм (Рис. 5). Тогда данные таблицы можно заполнять через полученную форму. Аналогичную форму можно построить и для заполнения таблицы «Пьеса». 

Подпись:  

Рис. 6.
 Заполнение таблицы роль тоже можно осуществить с помощью формы, построенной с помощью мастера. Такие формы обеспечивают модификацию и внесение новых записей. Построение таких форм допускается, если у них есть не более одной связи типа многие-к-одному (см. схему данных, рис. 4.). Построенная с помощью мастера форма для заполнения списка ролей может выглядеть примерно так как показано на рис. 6. Список ролей в этом случае приводится в подчиненной форме, где его можно пополнять, модифицировать, удалять записи и так далее.

Подпись:  

Рис. 7.
 Заполнять форму «Спектакль» таким образом невозможно, поскольку у этой таблицы две связи многие-ко-многим. Правильнее сказать такую форму можно создать (рис.7), но пополнять таблицу «Спектакль» или «Пьеса» в таких формах невозможно. 

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

Схемы иерархии.

 Для построения полноценного проекта необходимо разработать схему функционирования проекта, то есть последовательность открытия форм и последовательность перехода от одной формы к другой. Иными словами необходимо построить схему иерархии.

 Естественно, первой формой, которая должна появляться после запуска, должна быть заставка программы, в которой должна содержаться информация о проекте и авторе. Закрытие заставки может осуществляться с помощью введения кнопки закрытия или с использованием таймера. Для описания использования таймера, кратко остановимся на фундаментальных понятиях объектного программирования. Основным понятием в этом случае является объект. Объектом считается все, подо что выделяется место в памяти. Таким образом, объектом являются таблицы, поля таблиц, формы, элементы управления и так далее. В Access насчитывается огромное число объектов, объединенных в классы, причем такое, что мы ставим целью познакомить лишь с минимально необходимым числом объектов, позволяющее построить работоспособный проект.

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

 Свойства объектов разделяются на свойства этапа разработки и свойства этапа выполнения. Свойства этапа разработки – это свойства, значение которых можно установить при работе в режиме конструктора. Эти свойства перечислены в списке свойств объекта. Свойства этапа выполнения – это свойства , значения которых можно устанавливать или только считывать во время выполнения приложения. Эти свойства не указаны в списке свойств объекта. Для того. чтобы использовать таймер при ограничении времени появления заставки проекта, в свойствах формы закладки «События» пункт интервал таймера задает в миллисекундах задержку выполнения команды пункта «Таймер».

 После закрытия заставки должна появляться главная управляющая форма, которая руководит передачей управления в проекте. Иерархическая схема представлена на рис. 8. Управляющую форму можно выполнить в режиме конструктора и снабдить рядом кнопок, которые в свою очередь открывают формы для выбора заполнения, просмотра или выборки таблиц. Однако можно сразу на управляющей форме внести уточнение, какую из таблиц мы хотим заполнять. Это можно сделать, поместив на управляющей форме группу переключателей, которые обеспечивают открытие той или иной формы. Управляющая форма в этом случае может иметь вид, представленный на рис. 9. Обработка кнопки заполнение форм осуществляется с помощью программного кода, представленного ниже. Кнопка просмотр занятости актеров открывает окно рисунка 3 предназначенного просмотреть занятость актера на данный момент. Напомним, что эта форма создавалась с помощью мастера и данные в полях ввода не могут быть изменены. Обработка нажатия этой кнопки осуществляется с помощью макроса. Третья кнопка открывает вспомогательную форму, где будут уточняться, какие выборки необходимо сделать. Тема выборки уточняется на управляющей форме.

Прямоугольная выноска: Выбор актераПрямоугольная выноска: Выбор ролиПодпись:  
Рис.10.
Подпись: Обработка значения группы «Выбор»

Private Sub Кнопка3_Click()
On Error GoTo Err_Кнопка3_Click
    Dim stDocName As String
    Dim stLinkCriteria As String
‘ Переменная a принимает значение 1,
 ‘ если выбран переключатель с надписью 
‘ «Актер» , 2 – «Пьеса» и 3 – «Спектакль»
  a = Выбор.Value
‘stDocName– принимает имя открываемой 
‘ формы
   Select Case a
     Case 1
     stDocName = "Актер1"
     Case 2
     stDocName = "Пьеса"
     Case 3
     stDocName = "Спектакль"
   End Select
’ Открытие формы
    DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка3_Click:
    Exit Sub
Err_Кнопка3_Click:
    MsgBox Err.Description
    Resume Exit_Кнопка3_Click
End Sub
  Заполнение форм «Актер», «Пьеса» и «Роль» было рассмотрена выше и для создания форм, связанных с этими таблицами, вполне достаточно использовать мастер построения форм. Форму «Спектакль» необходимо заполнять, исходя из данных таблиц «Роль» и «Актер». Для ее заполнения создадим форму, представленную на рис.10. На форме предложены два списка, имеющих имена «ВыборРоли» и «ВыборАктера». Свойство Column(0) этих списков совпадает с кодом роли и кодом актера. Именно эти

значения передаются в таблицу «Спектакль». Кроме того, из поля ввода «Дата» выбирается дата спектакля. Занесение данных в таблицу «Спектакль» осуществляется нажатием клавиши «Утвердить». Программный код, осуществляющий эти действия, приведен ниже.

Подпись: Private Sub Утвердить_Click()
‘ Создание объектной переменной, связанной с записями таблицы "Спектакль"
Set t = CurrentDb.OpenRecordset("Спектакль")   
‘ Добавление новой записи
t.AddNew
‘ Заполнение
t.КодАктера = ВыборАктера.Column(0)
t.КодРоли = ВыборРоли.Column(0)
Дата.SetFocus
t.Дата_постановки = DateValue(Дата.Text)
‘ Обновление таблицы "Спектакль"
t.Update
End Sub
Источник данных для списков «ВыборРоли» и «ВыборАктера» формируется из следующих запросов.

Список «ВыборРоли»

SELECT [Запрос2].[КодРоли], [Запрос2].[роль], [Запрос2].[Название], [Запрос2].[Автор] FROM Запрос2;

Список «ВыборАктера»

SELECT [Актер].[КодАктера], [Актер].[Фамилия] & " " & left([Актер].[Имя],1) & "." & left([Актер].[Отчество],1) & ".", [Актер].[Звание] FROM Актер;

Запрос2 имеет вид

SELECT Роль.КодРоли, Роль.роль, Пьеса.Название, Пьеса.Автор

FROM Пьеса INNER JOIN Роль ON Пьеса.КодПьесы = Роль.КодПьесы;

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

 Кнопка «Закрыть» закрывает данную форму. Активной становится управляющая форма, представленная на рис. 9. 

Информатика лекции и контрольные