
- •Информационное обеспечение систем управления
- •Введение
- •Лабораторная работа №1. Текстовый процессор Word
- •1. Набор математических формул
- •На экране появится окно для ввода формулы и таблица с набором различных символов (рис.1).
- •2. Создание макросов
- •Лабораторная работа №2. Создание простого html-документа
- •Список основных меток языка представлен в следующей таблице
- •Порядок выполнения работы
- •Лабораторная работа № 3. Создание и использование графической карты
- •Порядок выполнения работы
- •Лабораторная работа № 4. Создание и использование фреймов
- •Лабораторная работа № 5 Элементы управления в гипертекстовом документе
- •Порядок выполнения работы
- •Лабораторная работа № 6 Создание многотабличной базы данных
- •Фамилия кс кс Сумма Сумма
- •Имя Группа Механика
- •Лабораторная работа № 7 Проектирование форм в Access 97
- •1. Создание основной кнопочной формы
- •2. Создание вспомогательных форм
- •Порядок выполнения работы
- •Лабораторная работа № 8 Создание формы для идентификации пользователя
- •Порядок выполнения работы
- •1. Подготовка текстового файла со списком фамилий пользователей и их паролей
- •2. Создание формы для проверки пароля
- •3. Событие Load – загрузка формы Проверка
- •3. Событие AfterUpdate для объекта Поле1
- •4. Событие AfterUpdate для объекта Поле2
- •5. Событие Click для объекта Кнопка
- •Содержание
- •Информационное обеспечение систем управления
Лабораторная работа № 7 Проектирование форм в Access 97
Целью предыдущей работы было создание многотабличной БД «Сессия». Структура таблиц этой БД и связи между ними показаны на рис.18.
В данной работе требуется создать несколько форм с элементами управления, позволяющих выполнять такие операции с БД, как просмотр записей, редактирования, печать отчета и т.д.
1. Создание основной кнопочной формы
Вид основной кнопочной формы показан на рис.21.
Рис.21. Вид экрана с основной кнопочной формой
На ней имеются следующие элементы:
– заголовок «База данных Сессия»;
– четыре кнопки «Просмотр», «Корректировка», «Печать» и«Выход»;
– декоративный элемент – рисунок в нижней части формы.
Создать такую форму удобнее с помощью конструктора. Используя панель элементов, можно разместить необходимые элементы на форме, придать нужные размеры и свойства (тип шрифта, цвет и т.д.).
Перейдя затем в режим «Программа», необходимо написать тексты процедур, определяющих действия системы при наступлении тех или иных событий (то есть какие методы будут применены для изменения свойств объектов). Для управляющих элементов данной формы (кнопок) таким событием является нажатие кнопки – «Click».
Тексты процедур приведены ниже.
Option Compare Database
Option Explicit
Private Sub выход_Сliск()
DoCmd.Close
End Sub
Private Sub корректировка_Сliск()
DoCmd.OpenForm “корректировка”
End Sub
Private Sub отчет_Сlicк()
DoCmd.OpenReport “отчет”, acViewPreview
End Sub
Private Sub Просмотр_Сlicк()
DoCmd.OpenForm “просмотр”
End Sub
В частности, первая процедура называется выход_Сlick(). При нажатии кнопки «выход» будет применен метод Close, результатом которого форма закроется.
Вторая процедура, корректировка_Сliск() активизирует метод OpenForm, открывающий вспомогательную форму «корректировка» и т.д.
Как видно, во всех процедурах используется инструкция типа DoCmd.метод.
2. Создание вспомогательных форм
Для просмотра записей многотабличной БД удобно использовать т.н. «ленточную» форму, создать которую легче всего, используя мастер форм программы Access.
Рис.22. Ленточная форма с элементами управления
Предварительно нужно создать запрос к БД на выборку с помощью шаблона, в котором нужно указать, какие таблицы и какие поля используются при выводе данных на экран. Имя этого запроса, а также тип формы (табличная, ленточная) указывается при обращении к мастеру форм.
В созданную таким путем форму можно добавлять любые управляющие элементы. Для этого надо открыть созданную форму в режиме конструктора и, используя панель инструментов, поместить нужный элемент в раздел «примечание формы» и «заголовок формы» (рис.22).
Наибольшие трудности вызывает написание инструкций, обеспечивающих диалог пользователя с системой, например при необходимости удаления, добавления или корректировки записей БД. Форма «корректировка» показана на рис.23.
На форме «корректировка» размещены следующие элементы управления: поле со списком (для вывода кода студента КС и списка фамилий), трех переключателей («флажков»), трех полей для ввода оценок (при открытии формы они невидимы), кнопки «ОК» подтверждения ввода и кнопки «возврат» для возврата в главную кнопочную форму.
Для того чтобы «привязать» поле формы к определенному полю базы данных, необходимо указать в окне свойств данного элемента в качестве источника данных. Так, например, для поля со списком «код студента» в окне свойств в поле «тип источника строк» нужно указать таблица/запрос, а в поле «источник строк» – инструкцию SELECT с параметрами, определяющими название полей таблицы.
Рис.23. Вид формы «корректировка»
В этом же окне свойств объекта «поле со списком» необходимо указать номер выводимого в это поле столбца таблицы (в нашем случае это «КС» – код студента, он первый в списке столбцов таблицы «Студенты» и поэтому его номер – 0). Если в разворачивающем списке кроме кода студента нужно выводить еще фамилию и имя, то в окне свойств в поле «число столбцов» (на вкладке «макет») нужно ввести число 3, там же задается и ширина выводимых столбцов.
Ниже приведен текст программы для формы «корректировка».
Вначале идут описания глобальных (общих для все процедур формы) переменных.
Процедура OK_Click() описывает действия системы при нажатии кнопки «ОК» (подтверждения обновления значений полей БД «Математика», «Физика» и «Информатика» той записи, которая была выбрана в поле со списком. Кроме того, выполняется обновление поля «Сумма».
Процедура Boзврат_Click() обеспечивает вызов основной кнопочной формы после нажатия кнопки «Возврат».
Процедура ПолеСоСписком_AfterUpdate() описывает, что должно произойти после того, как будет выбрано значение из выпадающего списка. После описания переменной str2 как строковой выполняются следующие действия (результат применения метода AfterUpdate). Переменная strl (ранее она была описана как глобальная) принимает то значение кожа студента (КС), которое окажется в поле формы после выбора нужной фамилии из списка. Это значение должно быть затем вставлено в инструкцию SELECT для нахождения соответствующей записи в базе данных
Рис.24. Окно свойств объекта «поле со списком»
Для формирования строки запроса SQL используются переменные strl и str2.
Переменная str2 в результате принимает следующее значение
SELECT [Результаты].* FROM [Результаты] WHERE ((([Результаты].КС)= strl))
Это предложение в соответствии с синтаксисом языка SOL расшифровывается следующим образом: «получить значения всех полей таблицы «результаты» для тех записей, у которых значение поля КС совпадает со значением переменной strl. Найденная запись копируется в глобальную переменную Recset типа Recordset (множество записей). Это происходит в результате выполнения инструкции
Set Recset = CurDB.OpenRecordset(str2)
После этого переменным omat, ofis и oinf присваиваются значения соответствующих полей таблицы «Результаты»: «Математика», «Физика», «Информатика». Эти значения затем присваиваются полям формы «поле_мат», «поле_физ» и «поле_инф».
Option Compare Database
Option Explicit
Private CurDB As Database
Private Recset As Recordset
Private str1 As String 'строковая переменная для значения из поля со списком
Private omat As Byte
Private ofis As Byte 'переменные для ввода оценок
Private oinf As Byte
Private Sub OK_Click()
Recset.Edit
Recset! Математика = omat
Recset! Физика = ofis
Recset! Информатика = oinf
Recset! Сумма = omat + ofis + oinf
Recset.Update
End Sub
Private Sub Возврат_Сliск()
DoCmd.Close
DoCmd. OpenForm “главная_кнопочная_форма”
End Sub
Private Sub ПолеCoCписком_AfterUpdate()
Dim str2 As String
str1 = ПолеСоСписком.SelText ' сначала str1–код студента КС
str1 = “ ' ” & str1 & “ ' )) “ ‘ затем добавляются апострофы и две скобки
str2 = “SELECT [Результаты].* FROM [Результаты] “
str2 = str2 & “WHERE ((([Результаты].КС) = “ & str1
Set CurDB = DBEngine.Workspaces(0).Databases(0)
Set Recset = CurDB.OpenRecordset(str2)
omat = Recset! Математика
ofis = Recset! Физика
oinf = Recset!Инфopмaтикa
Поле_мат.Value = omat
Поле_физ.Value = ofis
Поле_инф.Value = oinf
End Sub
Private Sub Флажок_матем_Сlicк()
If Флажок_матем.Value Then Поле_Maт.Visible = True
Else Поле_мат.Visible = False
End Sub
Private Sub Флажок_информ_Сlicк()
If Флажок_информ.Value Then Поле_инф.Visible = True
Else Поле_инф.Visible = False
End Sub
Private Sub Флажок_физ_Сlicк()
If Флажок_физ.Value Then Поле_физ.Visible =True
Else Поле_физ.Visible = False
End Sub
Процедура Флажок_матем_AfterUpdate() описывает то, что происходит после обновления значения переключателя «Флажок_матем» (первый слева на форме, показанной на рис. 23). Если в нем стоит галочка, он принимает значение «истина», в противном случае – «ложь». В соответствии с приведенной в программе инструкцией (предложение if... then) при каждом изменении состояния переключателя изменяется свойство «быть видимым» объекта «поле_мат» – поля, предназначенного для ввода оценки по математике. Аналогично работают и последние две процедуры.
Для того чтобы при нажатии на главной кнопочное форме кнопки «печать отчета» на экран выводился отчет, его предварительно нужно создать с помощью мастера отчетов и присвоить ему имя «отчет» (в принципе, имя может быть любым, лишь бы оно совпадало с именем, указанным в инструкции процедуры отчет_С1ick() главной кнопочной формы:
DoCmd.OpenReport “отчет”, acViewPreview
Встроенная константа acViewPreview, которая в инструкции стоит после имени отчета задает режим вывода «Previw», что означает вывод на экран перед печатью. Без этого параметра отчет будет выводиться сразу на принтер.