Как делать формы в ACCESS Руководство разработчика Переход по подчиненным формам Шаг 1 При нажатии на кнопки открываются разные подчиненные формы (реализовано на форме fmMain) Создаете несколько форм (например, три: одну мы сделаем главной, а две остальных – подчиненными). Ставите на главную форму две кнопки (мастер отключен). Ставите на главную форму два элемента подчиненная форма или отчет (пфо) (мастер отключен). У каждого пфо устанавливаете имя в Свойства->Другие->Имя По умолчанию стоит Внедренный, нужно изменить на sf+имя формы, например sfDog (приставка sf от subform – подчиненная форма). У каждого пфо устанавливаете форму-источник в Свойства->Данные-> Объект-источник. В Свойства->Макет в всех пфо устанавливаете одинаковые координаты и размер, так чтобы они располагались точно один под другим. В Свойства->Макет у всех пфо, кроме одного, ставите Вывод на экран Нет, чтобы сделать их невидимыми. Переход по подчиненным формам Шаг 2 Напишите макрос mcHideSubform, который будет делать все пфо невидимыми. Выбираете макрокоманду ЗадатьЗначение. В аргументах макрокоманды в строчке Элемент запускаете Построитель выражений (нажатием на «…»). Выбираете свойство visible у первой пфо: В строчке Значение пишите Ложь. Следующая макрокоманда (тоже ЗадатьЗначение) аналогичным образом делает невидимой вторую подчиненную форму. Переход по подчиненным формам Шаг 3 Напишите макрос mcShowSubform. Он будет делать сначала все подчиненные формы невидимыми, а потом одну из них (ту, которую нужно) видимой. Выбираете макрокоманду ЗапускМакроса. В аргументах макрокоманды в строчке Имя макроса пишете mcHideSubForm. Выбираете макрокоманду ЗадатьЗначение. Задаете свойству visible у нужной пфо значение Истина. У нас несколько кнопок и каждая должна делать видимой одну из подчиненных форм. Несколько похожих макросов можно объединить в один. Надо кликнуть правой кнопкой мыши на заголовок макроса (там, где написано mcHideSubform : макрос) и добавить Имена Макросов. Переход по подчиненным формам Шаг 4 Осталось связать выполнение макросов с нажатием на кнопки на главной форме. В Свойства->События->Нажатие на кнопку для первой кнопки ставите выполнение макроса mcShowSubform.One Для второй соответственно поставьте mcShowSubform.Two И любуйтесь кнопочками! Связанная подчиненная форма Шаг 1 На подчиненной форме показаны только те собаки, которые принадлежат владельцу, выбранному на главной форме (реализовано на форме fmRegOwner) У вас должно быть в базе данных две таблицы, у одной из которых есть столбец, куда подставляются значения из другой, т.е. между таблицами установлена связь. Если вы делали подстановку с помощью мастера, то эта связь была установлена автоматически, иначе ее нужно вручную прописать на Схеме данных. Например, у собаки есть столбец с ID хозяина. Создаете с помощью мастера две формы. В качестве источника строк у одной поставьте одну из этих таблиц, у другой – другую. В нашем примере у одной – tbPerson, у другой – tbDog. Ставите на главную форму элемент управления подчиненная форма или отчет (пфо) (мастер отключен). Связанная подчиненная форма Шаг 2 Настройте пфо, связав его с главной формой. В Свойства->Данные->Объект-источник устанавливаете форму-источник. Это будет подчиненная форма. В нашем примере – fmDog. В Свойства->Данные->Подчиненные поля ставите имя поля в подчиненной таблице, значения в котором должны быть равны … … значению поля в главной, имя которого указано в Свойства->Данные-> Основные поля. Бонус: если между таблицами установлена связь на схеме данных, последние настройки будут выполнены автоматически! И любуйтесь связанной подчиненной формой! Быстрый просмотр отчета На при нажатии на кнопку открывается отчет (реализовано на форме fmResults) Создайте отчет, форму и расположите на форме кнопку. Если при создании кнопки был включен мастер, то достаточно в окне мастера выбрать категорию Работа с отчетом и команду Просмотр отчета. То же можно сделать с помощью макроса. Создаете макрос mcOpenReport, внесите в него макрокоманду ОткрытьОтчет. В аргументах макрокоманды выберите нужный отчет и укажите режим вывода. В Свойства->События->Нажатие на кнопку для кнопки поставьте выполнение макроса mcOpenReport. И любуйтесь открывающимся отчетом! Фильтр 1 Отбор записей в форме по значению, выбранному в выпадающем списке Шаг1 Отбор по выпадающему списку (реализовано в форме fmFind) Подготовьте запрос (например qu_fmFind), создайте ленточную форму (задайте этот запрос в качестве источника данных для формы). Расположите в заголовке формы поле со списком Заполните поле со списком значениями из таблицы. Например, возрастная группа собаки. Для этого в Свойства-> Данные сделайте следующие настройки: Данные: <пусто> Тип источника строк: Таблица или запрос Источник строк: SELECT tbGroup.Group, tbGroup.Group FROM tbGroup; (в запросе поле, которое пойдет в список, необходимо указать дважды – это особенность поля со списком) Присоединенный столбец: 1 Укажите имя поля со списком в Свойства->Другие->Имя, (приставка cb от combobox – так называется поле со списком). Фильтр 1 Отбор записей в форме по значению, выбранному в выпадающем списке Шаг2 Напишите макрос mcFilter. Он будет отбирать записи в форме по значению, выбранному в поле со списком. Выберите макрокоманду ПрименитьФильтр. В аргументах макрокоманды в строчке ИмяФильтра напишите имя запроса, связанного с формой (qu_fmFind). В строчке УсловиеОтбора укажите поле по которому должна быть фильтрация, и элемент управления, откуда мы берем значения через «равно»: [Group]=[Формы]![fmFind]![cbGroup] Осталось связать выполнение макроса с выбором записи в выпадающем списке. В Свойства->События->После обновления для поля со списком поставьте выполнение макроса mcFilter. И любуйтесь, как фильтруются записи! Фильтр 2 Отбор записей в форме по подстроке Шаг 1 Отбор по подстроке, введенной в поле (реализовано в форме fmFind) Подготовьте запрос (например qu_fmFind), создайте ленточную форму (задайте этот запрос в качестве источника данных для формы). Расположите в заголовке элементы управления: поле и кнопку Укажите имя поля в Свойства->Другие->Имя, (приставка ed от edit – так называется поле по-английски). Например, edFind. Напишите макрос mcFilter. Он будет отбирать записи в форме на основании строки, введенной в поле. Выберите макрокоманду ПрименитьФильтр. В аргументах макрокоманды в строчке ИмяФильтра напишите имя запроса, связанного с формой (qu_fmFind). Фильтр 2 Отбор записей в форме по подстроке Шаг 2 В строчке УсловиеОтбора укажите: Осталось связать выполнение макроса с нажатием кнопки на форме. поле в форме, по которому должна быть фильтрация, чему должно быть равно значение в этом поле. Поскольку поиск идет по подстроке, необходимо применить оператор like. Все вместе будет выглядеть так: [Breed] Like "*"+[Формы]![fmFind]![edFind]+"*“ (В поле мы будем вводить фрагмент названия породы, например «сеттер»). В Свойства->События-> Нажатие на кнопку для кнопки поставьте выполнение макроса mcFilter. И любуйтесь, как фильтруются записи! Просмотр подробных данных На при нажатии на кнопку открывается форма с подробными сведениями о текущей записи (реализовано на форме fmTable) Создайте ленточную форму с краткими данными об объектах и одиночную форму с подробными данными (с фото и т.п.). Расположите на ленточной форме в Области Данных кнопку (проверьте, чтобы был подключен мастер). При нажатии на кнопку должна открыться Одиночная форма. Отвечая на вопросы мастера, настройте ее так, чтобы в новой форме показывались сведения о текущей записи из главной ленточной формы. И любуйтесь формой с подробными данными! Сортировка записей Сортировка записей по заданному полю (реализовано в форме fmTable) Создайте ленточную форму. В Заголовке формы расположите кнопку. Напишите макрос mcOrderBy. Он будет сортировать записи в форме по выбранному полю. Осталось связать выполнение макроса с нажатием кнопки на форме. Выберите макрокоманду ЗадатьЗначение. В аргументах макрокоманды в строчке Элемент укажите [OrderBy]. В строчке Значение напишите имя поля, по которому записи будут сортироваться, например: ”Name”. В Свойства->События-> Нажатие на кнопку для кнопки поставьте выполнение макроса mcOrderBy. И любуйтесь, как сортируются записи! Переход на заданную запись Шаг 1 Переход к владельцу при указании первых букв его фамилии (реализовано в форме fmRegOwner) Создайте одиночную форму («в один столбец»). В Заголовке формы разместите элементы управления: поле и кнопку Укажите имя поля в Свойства->Другие->Имя, (приставка ed от edit – так называется поле по-английски). Например, edFind. На кнопке напишите «Искать». Напишите макрос mcFindSurname. Он будет искать запись в форме по первым буквам фамилии, указанным в поле. Выберите макрокоманду КЭлементуУправления. В аргументах макрокоманды в строчке ИмяЭлемента напишите имя поля, по которому будет осуществляться поиск. Переход на заданную запись Шаг 2 Выберите макрокоманду НайтиЗапись. Осталось связать выполнение макроса с нажатием кнопки на форме. В аргументах макрокоманды в строчке Образец поиска после знака «равно» укажите имя поля, в которое вы будете вводить первые буквы фамилии. Должно получиться так: = [edFind] В строчке Совпадение выберите С начала поля В Свойства->События->Нажатие на кнопку для кнопки поставьте выполнение макроса mcFindSurname. И любуйтесь, как будет находиться запись! Переходы по записям Переход к на следующую/предыдущую/первую/ последнюю запись (реализовано в форме fmRegOwner) Зарядите свой Мозг батончиком Nuts! Вспомните то, о чем так хотелось бы забыть: контрольную по информатике. Вспомнили? Хорошо вспомнили?.. Тогда дело в шляпе! И любуйтесь делом рук своих!