Настройка формы Журнал Учителя

  1. Для того, чтобы лучше понять, как настраивать работу формы, которую только сейчас создадим, необходимо ввести хотя бы некоторые данные в журнал. И сделать это на «низком уровне», то есть без формы, а прямо в таблице. Откройте таблицу Журнал оценок и заполните ее 20-30 записями. Причем старайтесь поставить оценки так, чтобы ученики были с нескольких (хотя бы трех) классов, с хотя бы двух параллелей, и чтобы каждый учитель-предметник «поставил» бы какие-то оценки хотя бы двум-трем ученика с разных классов. Это важно для понимания того, как настраивать фильтры формы Журнал Учителя. (Например, пусть по географии оценки получат два ученика с 10 Б и три с 11 А).
  2. После ввода закройте таблицу.
  3. Перейдите к формам и Создайте при помощи мастера форму. Из таблицы Журнал оценок возьмите поля Фамилия, Предмет, Оценка, Дата. На последнем шаге назовите ее «Журнал учителя – оценки». Нажмите Готово.
  4. Форма отображает данные как форма, а нам нужно, чтобы она отображала данные в виде таблицы. Закройте форму, перейдите в режим конструктора и откройте форму. Перейдите на Макет и в поле Режим по умолчанию. Поставьте Режим таблицы. Закройте конструктор и откройте форму.
  5. Как видите, эта форма отображает данные о том, какие оценки по данному предмету получили ВСЕ ученики ВСЕХ классов со ВСЕХ параллелей, то есть она отображает ВСЕ содержимое таблицы Журнал оценок. Для учителя такая форма неудобна – ведь гораздо удобнее работать с журналом одного класса, а не всей школы! Необходимо добавить фильтры отбора. Но сначала сделаем так, чтобы при нажатии на кнопку в форме Журнал учителя открывалась эта форма – Журнал учителя – оценки. Для этого создадим микропрограмму – макрос.
  6. Выйдите в Макросы и нажмите кнопку Создать. В первой строке выберите заготовку макроса ОткрытьФорму. Внизу, в аргументах макроса, выберите имя формы Журнал учителя – оценки,режим – Таблица, режим данных – изменение - ведь учитель имеет право не только добавлять новые оценки но и старые корректировать. Закройте окно макроса и сохраните его под именем ОткрытьЖурналУчителя(без пробелов).
  7. Настройка формы Журнал Учителя - student2.ru Запустите макрос. Как вы видите, его действие равно выполнению команды пользователя по открытию формы. Теперь добавим кнопку открытия.
  8. Настройка формы Журнал Учителя - student2.ru Откройте в режиме конструктора главную форму Журнал учителя. Увеличьте место НАД (а не под!) примечанием формы. Поставьте на это место кнопку, настройте ее (Разное - Выполнить макрос – Далее – ОткрытьЖурналУчителя – Далее – Текст «Открыть журнал» - Готово. Закройте конструктор и откройте форму Журнал учителя.
  9. Выберите предмет, класс, параллель и нажмите кнопку Открыть журнал.
  10. Форма открывается, но… Там опять все те же ВСЕ оценки по всем предметам. Закройте обе формы.
  11. Добавим фильтры отбора – ведь данные для отбора у нас уже есть в полях со списками Класс: и Параллель. Откройте форму Журнал учителя – оценки в режиме конструктора.
  12. Щелкните по левому верхнему углу формы и перейдите на вкладку Данные.
  13. Щелкните по кнопке справа от поля «Источник строк». Ответьте ДА на вопрос о построителе запросов. В появившемся запросе в первом столбце введите таблица «Журнал оценок», поле «Фамлия», во втором: «Журнал оценок», «Предмет», в третьем: «Журнал оценок», «Оценка», В четвертом: «Журнал оценок», «Дата». Однако этих данным мало для запроса.
  14. В окне запроса, где отображаются таблицы-источники (а сейчас там всего одна – Журнал оценок) щелкните правой кнопкой мыши и выберите Добавить таблицу и добавьте таблицуУченики.
  15. В пятом поле запроса введите: «Ученики», «Класс», в шестом: «Ученики», «Параллель». Теперь в запросе все данные, которые нам нужны для фильтрации общей таблицы.
  16. В запросе в строке Условие отбора в поле Предмет щелкните правой кнопкой мыши и выберите «Построить». Появится окно Построителя выражений. Он помогает автоматически построить выражение запроса без ошибок. В первом окне построителя выберите Forms – все формы, выберите форму Журнал учителя и выберите объект, который будет источником отбора – поле Код предмета. Нажмите Вставить и ОК.
  17. Аналогично в поле запроса Класс при помощи построителя введите выражение по классам - Forms – все формы, выберите форму Журнал учителя и выберите объект, который будет источником отбора – поле Списокклассов.
  18. Аналогично для поля запроса Параллель введите выражение запроса по параллелям.
  19. Закройте запрос и конструктор. Проверим действие фильтра. Откройте главную форму, которую создали ранее – Журнал Учителя. Выберите преподавателя, класс и параллель. Нажмите кнопку Открыть журнал.
  20. Как видно, в дочерней форме теперь отображаются только те ученики, которые соответствуют введенным в главной форме преподавателю, предмету, классу и параллели. Смените в главной форме преподавателя, или класс, или предмет. Нажмите кнопку Открыть журнал.Однако в журнале ничего не изменилось! Чтобы увидеть журнал другого класса или предмета, нужно эту форму закрыть и заново открыть. Проверьте!
  21. Сделаем так, чтобы окно журнала с оценками открывалось в модальном режиме – то есть, пока его не закроешь, нельзя вернуться на форму, это окно породившую. Закройте обе формы, откройте в режиме конструктора макрос ОткрытьЖурналУчителяи измените режим окна на Окно диалога. Закройте макрос и вновь откройте форму и проверьте модальность окна журнала оценок.
  22. Попытайтесь изменить данные формы Журнал учителя – оценки. Если все работает, попытайтесь вводить новые оценки. Обратите внимание на недочеты –
    • при выборе учеников появляется список ко ВСЕМИ учениками, а надо, чтобы в списке были те, кто учится в выбранном классе.
    • Хоть журнал открылся для выбранного предмета, предмет в поле предметы все равно придется вводить – иначе данные не запомнятся в общей таблице оценок, вернее, запомнятся, но с предметом 0.
  23. Исправим сначала второй недочет. Закройте формы и создайте новый макрос. В первой строчке введите заготовку макроса ЗадатьЗначение. Внизу, в аргументах макроса в поле элемент введите [Формы]![Журнал учителя - оценки]![Предмет], а в поле Выражение введите [Формы]![Журнал учителя]![Код].Этот макрос заменяет поле предмета данными из родительской формы с поля код предмета. Закройте макрос, назвав его Подстановка.
  24. Когда его запускать? Тогда, когда пользователь изменяет запись в поле Фамилия формы Журнал учителя – оценки. Откройте в режиме конструктора форму Журнал учителя – оценки. Правой кнопкой щелкните на поле Фамилия и выберите Свойства. Перейдите на вкладку События и в поле Изменение выберите только что созданный макрос - Подстановка. Теперь при вводе или изменении фамилии поле Предмет автоматически заполнится выбранным предметом!
  25. Теперь исправим первый недочет. Продолжая оставаться в режиме настройки поля Фамилия, перейдите на вкладку Данные и щелкните по кнопке справа от поля Источник строк.
  26. Настройка формы Журнал Учителя - student2.ru В появившемся запросе, в третьей (пустой) колонке выберите Имя таблицы – Ученики, Поле – Класс, а в условии отбора введите [Forms]![Журнал учителя]![Списокклассов].Это заставитпрограмму при формировании списка в список брать только тех учеников, класс которых совпадает с выбранным в списке классов. В четвертой колонке запроса веведите запрос по полю Параллель таблицы Ученики. Условие отбора [Forms]![Журнал учителя]![СписокПараллелей]. Уберите с созданных полей галочки вывода на экран. Закройте запрос. Выделите поле Предмет вместе с его надписью и удалите. Теперь, после автозаполнения, оно нам не нужно. Закройте конструктор.
  27. Запустите форму. Откройте журнал выбранного класса. Как вы видите, теперь при заполнении новых оценок в списке подстановок фамилий и имен учеников имеются только те ученики, которые учатся в данном классе. Вроде бы, наконец-то недочетов нет!

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





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

Однако хватит высокопарных (хотя и искренних) философствований. Перейдем к созданию формы Классный Журнал

Усовершенствования

До создания классного журнала немного усовершенствуем то, что мы уже сделали. Вы помните вопрос о недочетах? Наверное, некоторые вы уже выявили для себя. Выделим два из них:

    • При открытии формы они располагаются на экране бесконтрольно, причем одна может перекрывать другую. Это неудобно.
    • Неудобно вводить дату оценки. Лучше бы сделать специальную форму для изменения даты.

Исправим первый недочет. Есть такой макрос – СдвигРазмер – он изменяет размер активной формы и ее координаты на экране. Координаты отсчитываются относительно верхнего левого окна Access до верхнего левого угла формы. Единицы измерения – сантиметры. Правда, эти сантиметры не всегда соответствуют реальным сантиметрам, и приходится несколько раз подбирать данные.

  1. Создадим макрос, настраивающий положение формы Классный Журнал. Договоримся, что при запуске она должна появляться посередине экрана вверху.
  2. Перейдите на Макросы, нажмите Создать.
  3. Выберите в первой строке макрос СдвигРазмер и внизу в аргументах введите По правому краю – 8см («см» не пишите, программа подставит автоматически), От верхнего края – 1см. Сохраните макрос под именем НастройкаЖурналаУчителя
  4. Аналогично создайте новый макрос с командой СдвигРазмер, в котором поставьте По правому краю – 1см, От верхнего края – 9см. и назовите макрос НастройкаОценокУчителя.Этот макрос будет настраивать местоположение журнала оценок.
  5. Когда эти макросы должны срабатывать? Тогда, когда нужная форма открывается. Свяжем эти макросы с соответствующими событиями форм.
  6. Войдите в режиме конструктора в форму Журнал учителя, перейдите на Макет – События и в строке Открытие выберите макрос НастройкаЖурналаУчителя. Закройте Макет и конструктор.
  7. Откройте в конструкторе форму Журнал учителя – оценки и аналогично свяжите с событием открытия макрос НастройкаОценокУчителя.Проверьте теперь, как и где открываются окна.

Первый недочет исправили. И научились управлять положением окон на экране. Теперь – исправление второго недочета. Создадим с нуля форму для выбора даты.

  1. В режиме КОНСТРУКТОРА (не мастера! – мы впервые создаем форму в режиме конструктора!) создайте форму.
  2. Настройка формы Журнал Учителя - student2.ru Настройка формы Журнал Учителя - student2.ru Дважды щелкните в левом верхнем углу, перейдите в Макет и в поле Рисунок нажмите на кнопку справа и из папки (которая у вас может открыться автоматически) C:\Program Files\Microsoft Office\OFFICE11\BITMAPS\STYLES выберите понравившийся вам рисунок, например ACEXPDTN.GIF. В поле Мозаичное заполнение поставьте Да. Это заставит рисунок, который меньше формы по своим размерам, мозаикой заполнить форму. Закройте Макет.
  3. Настройка формы Журнал Учителя - student2.ru Поставьте в левом верхнем углу поле со списком, выберите фиксированный набор значений и введите в один столбец числа от 1 до 31 – это дни месяца. Назовите список День.
  4. Настройка формы Журнал Учителя - student2.ru Аналогично добавьте ниже поле со списком Месяц (числа от 01 до 12) и Год (числа от 2006 до 2009).
  5. Зайдите в Макет и уберите полосы прокрутки, область выделения и кнопки перехода. Закройте конструктор, сохраните форму под именемДата. Запустите форму и проверьте работу списков дней, месяцев и лет.
  6. Добавим поле, в котором будет синтезироваться выбранная дата. Именно из этого поля эта дата будет копироваться в журнал Оценок.
  7. Откройте в конструкторе форму Дата и правее списков поставьте поле (не поле со списком!) и назовите его Дата. Увеличьте (для удобства) его размеры и шрифт как поля, так и подписи к нему. Правой кнопкой щелкните на поле (а не на его надписи!) и выберите Свойства – Другие и в поле Имя введите Дата. Закройте макет.
  8. Также, заходя в свойства, измените имена для списков, назвав их соответственно День, Месяц и Год.
  9. Снова перейдите в свойства поля Дата, перейдите на Данные и справа от строчки Данные нажмите кнопку. В построителе выражений постройте выражение или введите строчку: [День] & "." & [Месяц] & "." & [Год]. Закройте построитель. Как вы заметили, эта формула объединяет текстовые данные дня, месяца и года через символ точки, что соответствует формату даты. Однако, чтобы эта строчка расценивалась как дата, необходимо задать маску ввода. Нажмите на кнопке справа от поля Маска ввода и выберите маску Краткий формат даты. Поставьте Настройка формы Журнал Учителя - student2.ru блокировку на поле Дата. Закройте макет.
  10. Войдите в свойства списка День – Данные поставьте значение по умолчанию – 1, ограничиться списком - Да, в списке Месяц – 01 и ограничение списком, а в списке Год – 2007 и ограничение списком.
  11. Закройте конструктор и откройте форму Дата. Проверьте, как работает выбор даты.
  12. Настройка формы Журнал Учителя - student2.ru Создайте макрос, который устанавливает поле Дата в координаты 16см от правого края и 9 см от верха. Назовите его НастройкаДаты. Свяжите этот макрос с событием открытия формы Дата.
  13. Откройте форму Дата, откройте форму Журнал учителя и в ней нажмите кнопку Открыть журнал. Все три формы не должны перекрывать друг друга (см. рис.). Если это не так, разберитесь, какую форму нужно передвинуть и измените данные соответствующего макроса и вновь проверьте.
  14. Автоматизация открытия. Сначала снимем режим модальности с формы Журнал учителя – оценки. Как вы помните, она открывается кнопкой Открыть журнал. А кнопка связана с макросом ОткрытьЖурналУчителя. Откройте этот макрос в режиме конструктора и смените Режим окна с Окно диалога на Обычное. Теперь в этом же макросе во второй строке поставим ту же команду, что и стояла в первой – ОткрытьФорму. В аргументах команды в поле Имя формы поставьте Дата. Закройте макрос.
  15. Откройте форму Журнал Учителя. Выберите предмет, класс и параллель и нажмите кнопку Открыть журнал. У вас должны открыться сразу две формы – Журнал учителя - оценки и Дата. Если теперь форма журнала «ушла» вниз, подкорректируйте макрос, который настраивает ее местоположение НастройкаОценокУчителя.
  16. Теперь создадим макрос, который должен копировать дату, введенную в Форме Дата и содержащуюся в его поле Дата в ячейку Дата активной строки таблицы оценок формы Журнал Учителя – оценки.
  17. Создайте новый макрос и в первой строчке выберите команду ЗадатьЗначение. Внизу, в аргументах, в поле Элемент введите при помощи построителя поле Дата формы Журнал учителя – оценки: Forms![Журнал учителя - оценки]![Дата]. В поле Выражение, введите, откуда для указанного элемента будет браться выражение – поле Дата формы Дата: Forms![Дата]![Дата].
  18. Сохраните макрос как ПодстановкаДаты.
  19. Настройка формы Журнал Учителя - student2.ru Откройте форму Дата в режиме конструктора и под полем Дата поставьте кнопку. В настройках кнопки выберите Разное – Выполнить макрос – ПодстановкаДаты – текст – «Подставить Дату».
  20. Настройте размер кнопки и шрифт надписи кнопки. Закройте конструктор.
  21. Откройте форму Журнал учителя.
  22. Выберите предмет, класс, параллель и нажмите кнопку Показать журнал. Если все правильно, должны открыться две формы – Журнал учителя - оценки и Дата.
  23. Измените какие0ниюудь записи в журнале или создайте новые. Дату вводите при помощи формы Дата. При нажатии на кнопку Подставить дату дата должна заноситься в выбранную строчку журнала в раздел Дата.
  24. И последний недочет уберем – сделаем так, чтобы при изменении предмета, класса или параллели форма с оценками автоматически закрывалась. Создайте новый макрос, в первой строке выберите команду Закрыть, в Аргументах – Тип – Форма, Имя - Журнал учителя – оценки, Сохранение – Да. Сохраните макрос под именем ЗакрытьОценки.
  25. Сопоставьте этот макрос с событиями «Кнопка вниз» кнопок перехода по записям формы Журнал Учителя, а так же событиям Изменения спискам СписокКлассов и СписокПараллелей.

Создание Классного Журнала

Основная форма

  1. Настройка формы Журнал Учителя - student2.ru Создадим в режиме конструктора (не мастера!) новую форму. Выйдите в Макет (дважды щелкнув по верхнему левому углу формы в режиме конструктора), и в поле Надпись введите «Классный журнал».
  2. Аналогично созданию формы Дата, настройте внешний вид формы – выберите фоновый рисунок, удалите полосы прокрутки, область выделения и кнопки перехода.
  3. Вставьте в верхнюю часть надпись и введите текст: Выберите класс. Измените размер шрифта на 16.
  4. Вставьте ниже два поля со списком. В надписи одного из них введите «Класс:», второго – «Параллель». Измените размер шрифта на 14.
  5. Войдите в свойства списка Класс (а не его надписи!) и в странице Другие в строке Имя введите Класс. В странице Данные установите режим Ограничиться списком. Значение по умолчанию поставьте 10.
  6. Так же измените имя списка параллелей на Параллель и поставьте ограничение списком. Значение по умолчанию – А.
  7. Закройте макет и конструктор и сохраните форму как Классный журнал.

Наши рекомендации