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

advertisement
Как делать формы в
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!
Вспомните то, о чем так хотелось бы забыть: контрольную по
информатике.
Вспомнили?
Хорошо вспомнили?..
Тогда дело в шляпе!

И любуйтесь делом рук своих!




Download