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

Архив / Lab_BD_old

.pdf
Скачиваний:
36
Добавлен:
14.05.2015
Размер:
705.15 Кб
Скачать

Комплекс лабораторных работ по дисциплинам «Управление данными» и «Базы данных»

Формы

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

Чтобы создать форму, необходимо в окне базы данных перейти на вкладку Формы и нажать кнопку Создать, при этом откроется окно Конструктора форм.

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

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

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

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

Размеры, внешний вид и другие характеристики любого элемента управления можно настроить, выделив элемент управления и выбрав в меню пункт Вид, Свойства. Открывшееся окно будет содержать характеристики и их значения для выделенного элемента управления.

Пример

Создадим форму для работы со списком студентов.

Вкачестве источника записей выбираем результат запроса для трех таблиц: Student, Teacher, Department, чтобы отобразить не коды преподавателя и факультета, а их названия.

Устанавливаем тип формы – ленточная.

В заголовок формы помещаем надпись «Студенты» и подписи к полям. Сохраняем форму под именем «frmAllStudents».

© Кафедра прикладной математики и кибернетики, 2008

11

Комплекс лабораторных работ по дисциплинам «Управление данными» и «Базы данных»

Создадим форму для работы с одной записью о студенте.

Вкачестве источника записей выбираем таблицу Student. Устанавливаем тип формы – одиночная.

Взаголовок формы помещаем надпись «Студент».

Вобласть данных помещаем поля CName, NDepartment, NIQ и NTeacher.

Поля ввода NDepartment и NTeacher преобразуем в элементы Поле со списком. В качестве источника строк для поля со списком NDepartment устанавливаем таблицу Department, а для поля со списком NTeacher – таблицу Teacher. Устанавливаем для этих компонентов Число столбцов равное 2, а свойство Ширина столбцов – «0 см; 3 см». В этом случае в раскрывающемся списке мы не увидим столбца с кодами, а только столбец с названиями факультетов и именами преподавателей.

Сохраняем форму под именем «frmStudentEdit».

© Кафедра прикладной математики и кибернетики, 2008

12

Комплекс лабораторных работ по дисциплинам «Управление данными» и «Базы данных»

Теперь добавим функциональность: в форме Список студентов можно просмотреть одновременно информацию о нескольких студентах. Чтобы изменить информацию о студенте, создадим кнопку «Изменить», при нажатии на которую будет открываться форма frmStudentEdit, поля которой будут содержать значения выбранной записи о студенте.

Чтобы добавить нового студента, создадим кнопку «Добавить», при нажатии на которую будет открываться форма frmStudentEdit с пустыми значениями полей.

Чтобы удалить информацию о студенте, создадим кнопку «Удалить», при нажатии на которую появляется диалоговое окно для подтверждения удаления, и после подтверждения запись удаляется.

Чтобы найти информацию о требуемом студенте по начальным буквам фамилии, создадим поле ввода, в котором пользователь будет вводить первые буквы и кнопку «Найти».

Для кнопок на форме frmAllStudents в Visual Basic создаем следующие обработчики событий:

Private Sub ButtonAdd_Click()

‘ открытие формы для добавления

DoCmd.OpenForm "frmStudentEdit", , , , acFormAdd

End Sub

Private Sub ButtonEdit_Click()

‘ открытие формы для изменения выбранной записи

DoCmd.OpenForm "frmStudentEdit", , , "[NStudent]=" & Me.NStudent

End Sub

Private Sub ButtonDel_Click()

‘ удаление текущей записи с запросом

If MsgBox("Вы действительно хотите удалить эту запись?", vbYesNo, "Удаление записи") = vbYes Then

CurrentDb.Execute "Delete from Student Where NStudent=" & Me.NStudent

End If

‘ обновление данных на форме frmAllStudents Forms![frmAllStudents].Requery

End Sub

Private Sub ButtonSearch_Click()

‘ установление фильтра для записей формы

Me.FilterOn = False

Me.Filter = "[Student.CName] like " & "'" & Me.SearchStr & "*'" Me.FilterOn = True

End Sub

Для кнопок на форме frmStudentEdit в Visual Basic создаем следующие обработчики событий:

Private Sub ButtonSave_Click()

закрытие формы frmStudentEdit DoCmd.Close

обновление данных на форме frmAllStudents Forms![frmAllStudents].Requery

End Sub

Private Sub ButtonCancel_Click()

DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70 DoCmd.Close

‘ обновление данных на форме frmAllStudents Forms![frmAllStudents].Requery

End Sub

Для формы frmStudentEdit устанавливаем в свойстве Область выделения значение «нет», в свойстве Кнопки перехода – значение «нет», в свойстве Разделительные линии – значение «нет».

© Кафедра прикладной математики и кибернетики, 2008

13

Комплекс лабораторных работ по дисциплинам «Управление данными» и «Базы данных»

Для формы frmAllStudents устанавливаем в свойстве Область выделения значение «да», в свойстве Кнопки перехода – значение «нет», в свойстве Разделительные линии – значение

«нет».

Подчиненные формы

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

© Кафедра прикладной математики и кибернетики, 2008

14

Комплекс лабораторных работ по дисциплинам «Управление данными» и «Базы данных»

Подчиненная форма связана с главной с помощью свойств Основные поля и Подчиненные поля элемента управления Подчиненная форма/отчет. Эти поля автоматически заполняются при вводе значения свойства Объект-источник на основе заданных связей между таблицами. Если связи не заданы (например, когда источником данных в форме является запрос), то эти свойства необходимо заполнить вручную. В свойстве Подчиненные поля необходимо ввести имя связующего поля из таблицы или запроса, на котором базируется подчиненная форма (т.е. имя поля внешнего ключа). В свойстве Основные поля необходимо ввести имя связующего поля из таблицы или запроса, на котором базируется главная форма (т.е. имя ключевого поля).

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

Внешний вид формы определяется значением свойства Режим по умолчанию для

формы.

Пример

Изменим форму frmStudentEdit. Добавим в нее подчиненную форму, в которой отображаются оценки студента с указанием названия предмета.

Создадим ленточную форму с именем «frmStudentMarks». В качестве источника записей выбираем результат запроса для двух таблиц: Marks, Subject чтобы отобразить не коды предметов, а их названия. В результат запроса включаем все поля таблицы Marks и поле CName из таблицы Subject.

Устанавливаем для формы в свойстве Область выделения значение «нет», в свойстве Кнопки перехода – значение «нет», в свойстве Разделительные линии – значение «нет».

На форму frmStudentEdit добавляем элемент управления Подчиненная форма с подписью «Оценки».

Для элемента управления подчиненная форма в свойстве Объект-источник устанавливаем значение «frmStudentMarks», в свойстве Подчиненные поля – значение «NStudent», в свойстве Основные поля – значение «NStudent».

На форму frmStudentEdit добавляем два элемента управления Кнопка с подписями «Добавить оценку» и «Удалить оценку».

© Кафедра прикладной математики и кибернетики, 2008

15

Комплекс лабораторных работ по дисциплинам «Управление данными» и «Базы данных»

Теперь можно посмотреть оценки студента.

© Кафедра прикладной математики и кибернетики, 2008

16

Комплекс лабораторных работ по дисциплинам «Управление данными» и «Базы данных»

Для добавления оценок создадим еще одну одиночную форму с именем «frmMarkEdit», которая будет открываться после нажатия на кнопку «Добавить оценку» на форме frmStudentEdit.

Вкачестве источника записей для формы frmMarkEdit выбираем таблицу Marks.

Взаголовок формы frmMarkEdit поместим элемент управления Надпись и элемент управления Поле ввода, в котором будет отображаться фамилия студента, которому будет добавлена оценка. Для поля ввода в свойстве Данные установим значение «=[Forms]![frmStudentEdit]![CName]», что означает, что данные для этого поля будут получены

сформы frmStudentEdit.

Вобласть данных поместим поля таблицы NSubject, NMark, NStudent. Поле ввода NSubject преобразуем в элемент Поле со списком. В качестве источника строк для поля со списком устанавливаем таблицу Subject. В свойстве Число столбцов устанавливаем значение «2», а в свойстве Ширина столбцов – значение «0 см; 3 см».

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

Вобласть Примечание формы поместим элемент управления кнопка для сохранения введенного значения.

Для этой кнопки создадим следующий обработчик события:

Private Sub ButtonSave_Click()

закрытие формы frmMarksEdit

DoCmd.Close

‘ обновление данных на форме frmStudentEdit Forms![frmStudentEdit].Requery

End Sub

Для кнопок «Добавить оценку» и «Удалить оценку» на форме frmStudentEdit создадим следующие обработчики событий:

Private Sub ButtonMarkAdd_Click()

открытие формы frmMarkEdit для добавления данных

DoCmd.OpenForm "frmMarkEdit", , , , acFormAdd

запись в поле ввода NStudent на форме frmMarkEdit значения поля

NStudent с формы frmStudentEdit (Me) Forms![frmMarkEdit]![NStudent] = Me.NStudent

End Sub

© Кафедра прикладной математики и кибернетики, 2008

17

Комплекс лабораторных работ по дисциплинам «Управление данными» и «Базы данных»

Private Sub ButtonMarkDelete_Click()

‘ удаление из таблицы Marks выбранной оценки

CurrentDb.Execute "Delete from Marks where id=" &

Me.frmStudentMarks![id]

‘ обновление данных на форме frmStudentEdit

Forms![frmStudentEdit].Requery

End Sub

Индексы

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

Чтобы создать индекс, необходимо открыть окно Конструктора таблицы, выделив таблицу и щелкнув по кнопке «Конструктор».

© Кафедра прикладной математики и кибернетики, 2008

18

Комплекс лабораторных работ по дисциплинам «Управление данными» и «Базы данных»

Для создания простого индекса необходимо выбрать поле, которое требуется проиндексировать и установить в свойстве «Индексированное поле» значение «Да (Допускаются совпадения)» или «Да (Совпадения не допускаются)».

Для создания составного индекса необходимо выбрать в меню пункт Вид, Индексы. В открывшемся окне Индексы в таблице, находящейся в верхней части окна, ввести название индекса в первом столбце, выбрать из списка первое поле, входящее в составной индекс, выбрать порядок сортировки. В следующей строке оставить незаполненным первый столбец, а во втором столбце выбрать из списка второе поле составного индекса и настроить для него порядок сортировки. То же самое сделать для остальных полей, входящих в составной индекс – не заполнять первый столбец, выбрать из списка имя поля и настроить порядок сортировки. После этого закрыть окно Индексы.

Отчеты

Еще одним объектом базы данных являются отчеты. Отчет – это данные подготовленные для печати. Чтобы создать отчет необходимо перейти на вкладку Отчеты в окне базы данных и нажать кнопку Создать. Окно Конструктора отчетов похоже на окно Конструктора форм. Формирование внешнего вида отчета аналогично формированию внешнего вида формы.

Отчет состоит из нескольких разделов: Заголовок отчета – данные, расположенные в этом разделе будут напечатаны только на первой странице отчета, Верхний колонтитул – данные, расположенные в этом разделе будут печататься вверху каждой страницы отчета, Заголовок группы – данные, расположенные в этом разделе будут печататься в начале каждой группы данных, Область данных – данные, расположенные в этом разделе будут печататься для каждой записи источника данных, Примечание группы – данные, расположенные в этом разделе будут печататься в конце группы данных, Нижний колонтитул – данные, расположенные в этом разделе будут печататься в конце каждой страницы отчета, Примечание отчета – данные, расположенные в этом разделе будут напечатаны на последней странице отчета.

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

Вразделы отчета так же как и в формы переносятся поля источника данных и дополнительные элементы управления. Аналогично форме отчет может содержать подчиненные отчеты и вычисляемые поля.

Пример

Создадим отчет по запросу SmartStudent.

Вокне базы данных перейдите на вкладку Запросы и нажмите кнопку Создать. Выберите в меню пункт Вид, Свойства. В открывшемся окне перейдите на вкладку Все

ив строке Источник записей из раскрывающегося списка выберите запрос SmartStudent. Сгруппируем записи в отчете по названию факультета. Для этого выберите в меню

пункт Вид, Сортировка и группировка. В открывшемся окне в первом столбце первой строки вы берите из раскрывающего списка поле Department. В нижней части окна установите следующие характеристики: Заголовок группы – Да, Примечание группы – Да. Закройте окно.

ВОбласть заголовка группы поместите поле Department из окна полей (если оно не открыто, выберите в меню пункт Вид, Список полей).

ВОбласть данных поместите поля FIO, NIQ, Photo, настройте их характеристики по своему желанию. У нижней границы Области данных разместите горизонтальную линию.

ВОбласть верхний колонтитул поместите элемент управления надпись и введите текст «Список лучших студентов университета».

ВОбласть заголовок отчета поместите элемент управления надпись и введите текст «Университет». Характеристики надписей установите по своему желанию.

ВОбласть примечание группы поместите элемент управления поле (он на его кнопке изображены две буквы и вертикальная черта «аб|». В надписи введите текст «Всего:» и выделите элемент управления поле. Откройте для него окно свойств и выберите строку Данные. Нажмите справа от нее кнопку с изображением трех точек для вызова построителя выражений.

Влевом нижнем окне дважды щелкните по значку «плюс» напротив слова «функции» и выделите пункт «Встроенные функции». Найдите в правом нижнем окне функцию Count и дважды щелкните по ее названию, при этом в верхнем окне должна появиться строка Count(«expr»). В круглых скобках вместо «expr» введите символ звездочка (*) и нажмите кнопку ОК. Эта функция подсчитывает количество записей. Так как мы ее расположили в области

© Кафедра прикладной математики и кибернетики, 2008

19

Комплекс лабораторных работ по дисциплинам «Управление данными» и «Базы данных»

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

У нижней границы Области примечание группы разместите горизонтальную линию. Область нижний колонтитул удалите.

В Области примечание отчета поместите элемент управления поле и в строке данные в окне его свойств выберите функцию Date().

Закройте отчет сохранив его под именем Факультеты.

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

Макросы

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

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

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

Пример

Создадим макрос, выполняющий запрос SmartStudent.

В окне базы данных перейдите на вкладку Макросы и нажмите кнопку Создать. В первой строке таблицы в столбце Макрокоманда выберите из раскрывающегося списка макрокоманду Открыть запрос. В нижней части окна Конструктора появятся три аргумента этой команды: Имя запроса, Режим, Режим данных. Для первого аргумента, Имя запроса, из расположенного справа от него раскрывающегося списка выберите запрос SmartStudent. Аргумент Режим определяет режим открытия запроса и принимает три значения Таблица (выводится результат выполнения запроса), Конструктор (открывается окно конструктора запроса), Просмотр (открывается окно предварительного просмотра для вывода результатов запроса на печать). Выберите для этого аргумента значение Таблица. Аргумент Режим данных

© Кафедра прикладной математики и кибернетики, 2008

20