При нажатии на кнопки открываются разные подчиненные формы (реализовано на форме 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. Он будет искать запись в форме по первым буквам фамилии, указанным в поле.
Выберите макрокоманду КЭлементуУправления. В аргументах макрокоманды в строчке ИмяЭлемента напишите имя поля, по которому будет осуществляться поиск.
ШАГ2
Выберите макрокоманду НайтиЗапись.
В аргументах макрокоманды в строчке Образец поиска после знака «равно» укажите имя поля, в которое вы будете вводить первые буквы фамилии. Должно получиться так: = [edFind]
В строчке Совпадение выберите С начала поля
Осталось связать выполнение макроса с нажатием кнопки на форме.
В Свойства>События>Нажатие на кнопку для кнопки поставьте выполнение макроса mcFindSurname.
И любуйтесь, как будет находиться запись!
Переходы по записям
Переход к на следующую/предыдущую/первую/ последнюю запись (реализовано в форме fmRegOwner)
Зарядите свой Мозг батончиком Nuts!
Вспомните то, о чем так хотелось бы забыть: контрольную по информатике.