Лабораторная работа № 4. Формы. Управление записями в формах.
Задание: Создать формы на основе таблицы Студенты
Ход работы:
- Создайте форму для зачисления новых групп. В данной форме пользователь должен указывать номер новой группы и после этого вводить фамилии студентов данной группы. Для этого:
- При создании формы выберите конструктор и в качестве источника данных таблицу Студенты.
- Для того, чтобы у формы было подходящее название - Создание группы, сохраните форму и при этом в поле имени формы напишите данное имя.
- Добавьте в форму поле для указания номера группы. Назовите его Номер (для этого выберите вкладку Другие в окне свойств поля, вызываемом правой кнопкой мышки и заполните поле Имя).
- Исправьте подпись к полю Номер (размещенную слева). Проще всего для этого выбрать мышкой текст подписи и исправить его на Укажите номер группы:.
- Создайте еще два поля: для фамилии и группы студента. Свяжите их с соответствующими полями таблицы. (Для этого во вкладке Данные установите свойство Данные равным соответствующему полю таблицы.)
- Поле для фамилии назовите Фамилия и таким же сделайте текст подписи к этому полю.
- Поле для группы назовите Группа. Оно должно быть невидимым для пользователя. Для этого: удалите подпись к этому полю и установите цвет шрифта и фона совпадающим с цветом фона формы и оформление Обычное (не Утопленное).
- Выберите вкладку События свойств поля Номер и создайте макрос, реагирующий на событие После обновления. Для этого справа от этого поля необходимо нажать на кнопку....
- Назовите создаваемый макрос Добавление студента. Макрос должен находить незаполненую запись и переходить к полю Фамилия.
- Выберите в качестве первой команды макроса команду ВыполнитьКоманду. Аргумент Команда выберите равным RecordsGoToNew.
- Выберите в качестве второй команды макроса команду КЭлементуУправления. Аргумент Имя Элемента укажите равным Фамилия.
- Задайте условие для выполнения первой команды макроса, заключающееся в том, что поле Фамилия не пусто. Для этого в меню Вид выберите пункт Условия и в соответствующей ячейке укажите условие: [Фамилия] <> "". В чем будет недостаток работы формы, если это условие не задать?
- Установите реакцию на событие Потеря фокуса поля Фамилия - запуск макроса Добавление студента.
- Создайте макрос, реагирующий на событие Изменение поля Фамилия. Макрос должен присваивать полю Группа значение поля Номер.
- Назовите создаваемый макрос Установить группу и в качестве единственной команды выберите ЗадатьЗначение, аргументы Элемент и Выражение установите равными соответственно полю Группа и полю Номер.
- Проверьте работу формы. Для этого нажмите кнопку Вид для перехода в режим формы.
- Создайте форму для просмотра состава групп. Для этого:
- При создании формы выберите конструктор и в качестве источника данных таблицу Студенты.
- Для того, чтобы у формы было подходящее название - Просмотр группы, сохраните форму и при этом в поле имени формы напишите данное имя.
- Добавьте в форму поле с раскрывающимся списком для указания номера группы и задайте способ построения списка с помощью запустившегося мастера.
- Способ, которым список получает свои значения установите как использующий значения из таблицы или запроса (первый пункт).
- Выберите таблицу и поле Группа таблицы. Согласитесь с остальными предлагаемыми параметрами.
- Назовите список Группа (свойство Имя).
- Проверьте работу списка - запустите форму.
- Снова вернитесь к режиму конструктора.
- Результат работы мастера не вполне удовлетворителен: в список группы будут входить столько раз, сколько студентов присутствует в таблице. Кроме того, если таблица Студенты содержала добавочное ключевое поле, то оно будет зря включено в строящуюся выборку. Таким образом из строчки
SELECT DISTINCTROW [Студенты].[Код], [Студенты].[Группа] FROM [Студенты];
являющейся значением свойства Источник строк (во вкладке Данные) созданного списка надо убрать [Студенты].[Код], и DISTINCTROW заменить на DISTINCT. Так или иначе, в результате это свойство должно иметь вид:
SELECT DISTINCT [Студенты].[Группа] FROM [Студенты];
Кроме того, убрав [Студенты].[Код], (находившийся в невидимом столбце), Вам надо убрать ненужный невидимый столбец. Для этого свойства Число столбцов и Ширина столбцов (во вкладке Макет) надо установить соответственно равными 1 и ширине, указанной после 0см; (т.е. 0см; надо стереть). - Еще раз проверьте работу списка - запустите форму.
- Добавьте в форму список для отображения студентов указанной группы и задайте способ построения списка с помощью запустившегося мастера.
- Способ, которым список получает свои значения установите как использующий значения из таблицы или запроса (первый пункт).
- Выберите таблицу и поле Фамилия таблицы. Уберите флажок скрыть ключевой столбец (чтобы номер студента тоже отображался). Согласитесь с остальными предлагаемыми параметрами.
- Назовите список Студенты группы.
- Проверьте работу списка - запустите форму. В результате в списке студентов будут указаны все студенты независимо от указанной группы.
- Чтобы список выводил только студентов указанной группы, необходимо при каждом изменении группы устанавливать свойство Источник строк (во вкладке Данные) для данного списка. Для этого создайте макрос Назначение группы, реагирующий на событие Изменение списка Группа.
- Выберите в качестве первой команды макроса команду ЗадатьЗначение, аргументы Элемент и Выражение установите равными соответственно свойству RowSource (что означает "Источник строк") списка Студенты группы и выражению
'SELECT DISTINCTROW [Студенты].[Код], [Студенты].[Фамилия] FROM [Студенты] WHERE [Студенты].[Группа] = ' & [Forms].[Просмотр группы].[Группа].Text & ';' (не опускайте кавычки)
(Это выражение подставляет в инструкцию языка SQL значение искомой группы из поля Группа формы Просмотр группы). - Проверьте работу формы.
- Работа формы имеет следующий недостаток: при запуске формы показывается список всех студентов, даже если в поле со списком Группа указана какое-то значение. Для устранения этого недостатка необходимо запускать макрос Назначение группы не только при изменении поля со списком Группа, но и в начале работы формы. Чтобы это сделать, необходимо установить реакцию на событие Вход поля со списком Группа - запуск макроса Назначение группы.
- Еще одна деталь, которую имеет смысл сделать - изменение подписи к списку студентов. Для этого в макрос Назначение группы надо добавить команду ЗадатьЗначение, аргументы Элемент и Выражение установить равными соответственно свойству Caption элемента Студенты группы_подпись (подпись слева списка) и выражению
'Студенты группы ' & [Forms].[Просмотр группы].[Группа].Text & ':' - Проверьте работу формы.
- Одной из причин неправильной работы макроса при запуске формы может быть неправильная последовательность переходов между элементами формы. С помощью правой кнопки мышки удостоверьтесь, что последовательность перехода состоит из двух пунктов: 1) Группа, 2) Студенты группы.
- Для того, чтобы убрать ненужное в данной форме поле записи, выбирите вкладку Макет свойств формы (самой формы - для того, чтобы выбрать саму форму щелкните мышкой по пустому пространству в окне формы - темно серому) и установите свойство Поле номера записи равным значению Нет. Заодно установите значение Нет для свойства Область выделения.
- Создайте форму, организующую работу с группами на верхнем уровне, содержащую две управляющих кнопки: для зачисления новых групп и для просмотра состава групп. Для этого:
- Создайте форму в режиме конструктора и сохраните ее под именем Главная форма.
- Добавьте в форму кнопку. В запустившимся мастере параметры формы задайте следующим образом: Категория - Работа с формой, Действие - Открытие формы, открываемая форма - Создание группы. Укажите, что на кнопке необходимо разместить текст Создание группы.
- Таким же образом добавьте вторую кнопку. Название открываемой формы и текста на ней установите Просмотр группы.
- Уберите из формы Поле номера записи и Область выделения.
o Проверьте работу формы.
Дата добавления: 2015-11-26; просмотров: 68 | Нарушение авторских прав
mybiblioteka.su - 2015-2024 год. (0.009 сек.)