РГГУ – СоцФ – PR, Маркетинг
ИНФОРМАТИКА – преп. Малкова А.С.
Задания/Access-формы/Руководство-разработчика

Как делать формы в ACCESS

Руководство разработчика



Переход по подчиненным формам


При нажатии на кнопки открываются разные подчиненные формы (реализовано на форме fmMain)


ШАГ1

  • Создаете несколько форм (например, три: одну мы сделаем главной, а две остальных – подчиненными).
  • Ставите на главную форму две кнопки (мастер отключен).
  • Ставите на главную форму два элемента подчиненная форма или отчет (пфо) (мастер отключен).
    • У каждого пфо устанавливаете имя в Свойства>Другие>Имя По умолчанию стоит Внедренный, нужно изменить на sf+имя формы, например sfDog (приставка sf от subform – подчиненная форма).
    • У каждого пфо устанавливаете форму-источник в Свойства>Данные>Объект-источник.
    • В Свойства>Макет в всех пфо устанавливаете одинаковые координаты и размер, так чтобы они располагались точно один под другим.
    • В Свойства>Макет у всех пфо, кроме одного, ставите Вывод на экран Нет, чтобы сделать их невидимыми.

ШАГ2

  • Напишите макрос mcHideSubform, который будет делать все пфо невидимыми.
    • Выбираете макрокоманду ЗадатьЗначение. В аргументах макрокоманды в строчке Элемент запускаете Построитель выражений (нажатием на «…»). Выбираете свойство visible у первой пфо:
    • В строчке Значение напишите Ложь.
    • Следующая макрокоманда (тоже ЗадатьЗначение) аналогичным образом делает невидимой вторую подчиненную форму, следующая – третью и т.д.

ШАГ3

  • Напишите макрос mcShowSubform. Он будет делать сначала все подчиненные формы невидимыми, а потом одну из них (ту, которую нужно) видимой.
    • Выбираете макрокоманду ЗапускМакроса. В аргументах макрокоманды в строчке Имя макроса пишете mcHideSubForm.
    • Выбираете макрокоманду ЗадатьЗначение. Задаете свойству visible у нужной пфо значение Истина.
    • У нас несколько кнопок и каждая должна делать видимой одну из подчиненных форм. Несколько похожих макросов можно объединить в один. Надо кликнуть правой кнопкой мыши на заголовок макроса (там, где написано mcHideSubform : макрос) и добавить Имена Макросов.


ШАГ4

  • Осталось связать выполнение макросов с нажатием на кнопки на главной форме.
    • В Свойства>События>Нажатие на кнопку для первой кнопки ставите выполнение первого подмакроса (в примере это mcShowSubform.Registration)
    • Для второй соответственно поставьте второго подмакроса и т.п.

И любуйтесь кнопочками!


Связанная подчиненная форма


На подчиненной форме показаны только те собаки, которые принадлежат владельцу, выбранному на главной форме (реализовано на форме fmRegOwner)


ШАГ1

  • У вас должно быть в базе данных две таблицы, у одной из которых есть столбец, куда подставляются значения из другой, т.е. между таблицами установлена связь. Если вы делали подстановку с помощью мастера, то эта связь была установлена автоматически, иначе ее нужно вручную прописать на Схеме данных. Например, у собаки есть столбец с ID хозяина.
  • Создаете с помощью мастера две формы. В качестве источника строк у одной поставьте одну из этих таблиц, у другой – другую. В нашем примере у одной – tbPerson, у другой – tbDog.
  • Ставите на главную форму элемент управления подчиненная форма или отчет (пфо) (мастер отключен).

ШАГ2

  • Настройте пфо, связав его с главной формой.
    • В Свойства>Данные>Объект-источник устанавливаете форму-источник. Это будет подчиненная форма. В нашем примере – fmDog.
    • В Свойства>Данные>Подчиненные поля ставите имя поля в подчиненной таблице, значения в котором должны быть равны …
    • … значению поля в главной, имя которого указано в Свойства>Данные>Основные поля.

Бонус: если между таблицами установлена связь на схеме данных, последние настройки будут выполнены автоматически!


И любуйтесь связанной подчиненной формой!


Быстрый просмотр отчета


На при нажатии на кнопку открывается отчет (реализовано на форме fmResults)


  • Создайте отчет, форму и расположите на форме кнопку.
  • Если при создании кнопки был включен мастер, то достаточно в окне мастера выбрать категорию Работа с отчетом и команду Просмотр отчета.
  • То же можно сделать с помощью макроса.
    • Создаете макрос mcOpenReport, внесите в него макрокоманду ОткрытьОтчет. В аргументах макрокоманды выберите нужный отчет и укажите режим вывода.
    • В Свойства>События>Нажатие на кнопку для кнопки поставьте выполнение макроса mcOpenReport.

И любуйтесь открывающимся отчетом!


Отбор записей в форме по значению, выбранному в выпадающем списке (фильтр 1 )


Отбор по выпадающему списку (реализовано в форме fmFind)


ШАГ1

  • Подготовьте запрос (например qu_fmFind), создайте ленточную форму (задайте этот запрос в качестве источника данных для формы).
  • Расположите в заголовке формы поле со списком
    • Заполните поле со списком значениями из таблицы. Например, возрастная группа собаки. Для этого в Свойства>Данные сделайте следующие настройки:
    Данные: <пусто>
    Тип источника строк: Таблица или запрос
    Источник строк: SELECT tbGroup.Group, tbGroup.Group FROM tbGroup; (в запросе поле, которое пойдет в список, необходимо указать дважды – это особенность поля со списком)
    Присоединенный столбец: 1
  • Укажите имя поля со списком в Свойства>Другие>Имя, (приставка cb от combobox – так называется поле со списком).

ШАГ2

  • Напишите макрос mcFilter. Он будет отбирать записи в форме по значению, выбранному в поле со списком.
    • Выберите макрокоманду ПрименитьФильтр. В аргументах макрокоманды в строчке ИмяФильтра напишите имя запроса, связанного с формой (qu_fmFind).
    • В строчке УсловиеОтбора укажите поле, по которому должна быть фильтрация, и элемент управления, откуда мы берем значения через «равно»: [Group]=[Формы]![fmFind]![cbGroup]
  • Осталось связать выполнение макроса с выбором записи в выпадающем списке.
    • В Свойства>События>После обновления для поля со списком поставьте выполнение макроса mcFilter.

И любуйтесь, как фильтруются записи!


Отбор записей в форме по подстроке (фильтр 2)


Отбор по подстроке, введенной в поле (реализовано в форме fmFind)


ШАГ1

  • Подготовьте запрос (например qu_fmFind), создайте ленточную форму (задайте этот запрос в качестве источника данных для формы).
  • Расположите в заголовке элементы управления: поле и кнопку
    • Задайте имя поля в его Свойства>Другие>Имя, (приставка ed от edit – так называется поле по-английски). Например, edFind.
  • Напишите макрос mcFilter. Он будет отбирать записи в форме на основании строки, введенной в поле.
    • Выберите макрокоманду ПрименитьФильтр. В аргументах макрокоманды в строчке ИмяФильтра напишите имя запроса, связанного с формой (qu_fmFind).

ШАГ2
    • В строчке УсловиеОтбора укажите:
      • поле в форме, по которому должна быть фильтрация. В нашем примере, по породе
      • чему должно быть равно значение в этом поле. Поскольку поиск идет по подстроке, необходимо применить оператор like.
      • Все вместе будет выглядеть так: [Breed] Like "*"+[Формы]![fmFind]![edFind]+"*“ (В поле мы будем вводить фрагмент названия породы, например «сеттер»).
  • Осталось связать выполнение макроса с нажатием кнопки на форме.
    • В Свойства>События>Нажатие на кнопку для кнопки поставьте выполнение макроса mcFilter.

И любуйтесь, как фильтруются записи!


Открытие связанной формы в новом окне


На при нажатии на кнопку открывается форма с подробными сведениями о текущей записи (реализовано на форме fmTable)


  • Создайте ленточную форму с краткими данными об объектах и одиночную форму с подробными данными (с фото и т.п.).
  • Расположите на ленточной форме в Области Данных кнопку (проверьте, чтобы был подключен мастер).
  • При нажатии на кнопку должна открыться Одиночная форма. Отвечая на вопросы мастера, настройте ее так, чтобы в новой форме показывались сведения о текущей записи из главной ленточной формы.

И любуйтесь формой с подробными данными!


Сортировка записей


Сортировка записей по заданному полю (реализовано в форме fmTable)


  • Создайте ленточную форму.
  • В Заголовке формы расположите кнопку.
  • Напишите макрос mcOrderBy. Он будет сортировать записи в форме по выбранному полю.
    • Выберите макрокоманду ЗадатьЗначение. В аргументах макрокоманды в строчке Элемент укажите [OrderBy].
    • В строчке Значение напишите имя поля, по которому записи будут сортироваться, например: ”Number”.

  • Осталось связать выполнение макроса с нажатием кнопки на форме.
    • В Свойства>События>Нажатие на кнопку для кнопки поставьте выполнение макроса mcOrderBy.

И любуйтесь, как сортируются записи!


Поиск записи по образцу


Переход к владельцу при указании первых букв его фамилии (реализовано в форме fmRegOwner)


ШАГ1

  • Создайте одиночную форму («в один столбец»).
  • В Заголовке формы разместите два элемента управления: поле и кнопку
    • Укажите имя поля в Свойства>Другие>Имя, (приставка ed от edit – так называется поле по-английски). Например, edFind.
    • На кнопке напишите «Искать».
  • Напишите макрос mcFindSurname. Он будет искать запись в форме по первым буквам фамилии, указанным в поле.
    • Выберите макрокоманду КЭлементуУправления. В аргументах макрокоманды в строчке ИмяЭлемента напишите имя поля таблицы, по которому будет осуществляться поиск.
      Если по фамилии, то в аргументе должно быть написано [LastName].

ШАГ2
    • Выберите макрокоманду НайтиЗапись.
      • В аргументах макрокоманды в строчке Образец поиска после знака «равно» укажите имя поля на макете формы, в которое вы будете вводить первые буквы фамилии. Должно получиться так: = [edFind]
      • В строчке Совпадение выберите С начала поля
  • Осталось связать выполнение макроса с нажатием кнопки на форме.
    • В Свойства>События>Нажатие на кнопку для кнопки поставьте выполнение макроса mcFindSurname.

И любуйтесь, как будет находиться запись!


Переходы по записям


Переход к на следующую/предыдущую/первую/ последнюю запись (реализовано в форме fmRegOwner)


  • Зарядите свой Мозг батончиком Nuts!
  • Вспомните то, о чем так хотелось бы забыть: контрольную по информатике.
    Вспомнили?
    Хорошо вспомнили?..
  • Тогда дело в шляпе!

И любуйтесь делом рук своих!


ВСЁ

Разработка сайта: QuickStart Group, 2008