Access автозаполнение поля
Автоматическая подстановка значения в поле ввода
Частсг для заполнения некоторых полей таблиц требуется вычислить выражение на основе данных в других полях этой таблицы и, возможно, связанных с ней таблиц. Чтобы при вводе данных не вычислять это значение каждый раз самостоятельно, требуется создать форму для ввода данных, выполняющую необходимые вычисления автоматически. Это позволит застраховаться от ошибок при вычислениях и сократит время ввода данных.
Представим себе такой пример. Есть таблица «Товары» со списком товаров, где для каждого товара указана его цена (таблица содержит поля «НаименованиеТовара» и «Цена», и первое поле является ключевым). Есть другая таблица «Заказы» со списком заказов на эти товары, содержащая информацию о типе и количестве заказанного товара (поля «НаименованиеТовара» и «Количество»), а также о его стоимости (поле «Сумма»). Таблица «Заказы» связана с таблицей «Товары» по полю «НаименованиеТовара» отношением «один-ко-многим». Требуется создать форму для добавления новых заказов так, чтобы при выборе необходимого товара из предложенного списка и после ввода заказанного количества в поле «Сумма» автоматически подставлялось значение стоимости всего заказа для данного товара.
Для решения поставленной задачи требуется выполнить следующие действия:[ Реализация этого примера — небольшая база данных Заказы.mdb — есть на компакт-диске, который является дополнительным приложением к комплекту книг о Microsoft Office 2002 издательства «БХВ-Петербург» и распространяется отдельно. ]
- Создайте запрос, содержащий поле «Цена» из таблицы «Товары» и все поля из таблицы «Заказы». Сохраните его с именем «Заказано».
- Создайте форму «Заказы» на основе запроса «Заказано».
- Поместите в форму элемент управления Список, связанный с полем «НаименованиеТовара» источника данных формы.
Замечание
Это можно выполнить с помощью окна Список полей (Filed List) (см. гл. 5), предварительно указав в режиме Конструктора таблицы «Заказы» для поля «НаименованиеТовара» на вкладке Подстановка (Lookup) значение Поле со списком (Combo Box) для свойства Тип элемента управления (Display Control) и имя таблицы «Товары» в качестве значения свойства Источник,строк (Row Source).
- Поместите в форму текстовые поля, связанные с полями «Количество» и «Сумма» источника данных формы.
- Для поля «Количество» в окне свойств раскройте вкладку События (Events). Для события После обновления (After Update) создайте процедуру обработки события (см. разд. «Динамическая фильтрация данных» этой главы) со следующим содержанием:
Private Sub Количество_А£terUpdate()
Сумма = Цена * Количество End Sub
Таким образом, после ввода значения в поле «Количество» в поле «Сумма» будет автоматически подставлена вычисленная стоимость заказа. А поскольку поле «Сумма» является присоединенным к одноименному полю в таблице «Заказы», вычисленное значение автоматически попадет в таблицу.
Не всегда вычисляемые значения требуется сохранять в самих таблицах. Чаще всего достаточно только отобразить результат вычисления в вычисляемом поле формы или запроса для информирования пользователя. Ведь это значение можно вычислить в любой момент на основе данных, хранящихся в таблицах, и не потребуется выполнять проверку на правильность сохраненного значения при изменении значений полей, использованных в его вычислении, в других формах или непосредственно в таблице (см. также разд. «Создание вычисляемых полей» данной главы и разд. «Вычисления на выделенных записях таблицы»гл. 8).
Создание макросов. Автоматическое заполнение полей ЦенаПродажи и Сумма. Автоматический расчет поля ОбщаяСумма (суммирование полей).
Приобретение навыков по созданию макросов, для автоматического заполнения полей форм и автоматического расчета полей формы.
Макрос — это объект Access, используемый для автоматизации действий пользователя. Макровызовы выполняются в ответ на события в форме. Например, событию Нажатие клавиши кнопки можно «приписать» макрокоманду ОткрытьФорму,событию После обновления некоторого поля «приписать» макрокоманду ЗадатьЗначениедругому полю и т.д.
Access содержит более 50 макрокоманд. Перечень имен макрокоманд и описание макрокоманд можно получить из справочной системы Access, нажав клавишу F1.
Создание простого макроса предполагает выполнение нескольких действий:
1. Выберите закладку Макросыв главном окне базы данных Access и нажмите кнопку Создать.
2. После открытия окна Конструктора макросовнажмите кнопку Имена макросови кнопку Условия на Панели инструментов,для того чтобы появились соответствующие колонки окна. В этом окне и строятся макросы.
Здесь каждая строка с именем представляет собой отдельный макрос. В первой колонке записывают имя макроса, во второй — условие его выполнения (если необходимо), в третьей — макрокоманду, которую выбирают из списка, в последней, если требуется, — примечание. В нижней части окна задают значения аргументов макрокоманды, каждая макрокоманда имеет свой перечень аргументов.
На рисунке показан макрос с именем Ввод, который выполняет макрокоманду ЗадатьЗначение. Аргументы указывают, что полю [Сумма] присваивается значение [Цена]*[Количество]. Отметим, что имена полей заключаются в квадратные скобки.
Отметим также, что в одном окне Конструктора макросов можно записать несколько макросов (с разными именами), а затем сохранить их в закладке Макросы под общим именем, например, МоиМакросы. В этом случае обращение к макросу Ввод записывается так: МоиМакросы.Ввод.
Автоматическое заполнение полей ЦенаПродажи и Сумма
В таблице ЗаказаноТовара, с количеством и суммой следует хранить цену на момент продажи. Кроме того, поля ЦенаПродажи и Сумма должны заполняться автоматически.
Поле ЦенаПродажи (тип данных – денежный) необходимо добавить в таблицу ЗаказаноТовара, а не в таблицу Товары, так как оно характеризует конкретную строку заказа наряду с полями Количество и Сумма. В режиме Конструктора добавьте в таблицу ЗаказаноТовара поле ЦенаПродажи.
Следует добавить поле ЦенаПродажи и в соответствующий запрос: в запрос для подчиненной формы ЗаказаноТовара Под-форма введите поле ЦенаПродажи.
Необходимо создать два макроса и «приписать» их нужным полям, для автоматического заполнения полей ЦенаПродажи и Сумма. Первый макрос должен выполнять присваивание значения полей [ЦенаПродажи]=[Цена] при вводе товара, второй — выполнять присваивание [Сумма]=[ЦенаПродажи]*-[Количество] при любом обновлении полей ЦенаПродажи и Количество.
Сформируйте макросы, присвоив им для ясности имена ЦенаПродажи и Сумма.
Закройте и сохраните макросы с общим именем Заказы.
Необходимо обеспечить вызов созданных макросов в подчиненной форме ЗаказаноТовараПодформа с помощью событий: первый макрос должен быть «приписан» событию После обновления поля КодТовара; второй — событию После обновления полей Количество и ЦенаПродажи. Проделайте следующие действия:
1. Откройте форму ЗаказаноТовараПодформа в режиме Конструктора, выберите поле со списком КодТовара и откройте для него закладку Событияокна Свойства.
2. В свойство После обновления поля введите имя макроса Заказы.ЦенаПродажи (выберите из списка макросов).
3. Аналогично для полей Количество и Цена Продажи установите событие После обновления, но уже на макрос Заказы.Сумма.
4. Закройте форму ЗаказаноТовараПодформа и проверьте как все это работает. Откройте форму Заказы: при отборе новых товаров или замене товара цена продажи заполняется автоматически, а при вводе/изменении количества и цены продажи — сумма в строке пересчитывается.
Автоматический расчет поля ОбщаяСумма: суммирование полей
Нам осталось составить макрос, пересчитывающий поле ОбщаяСумма при изменении состава заказа, т.е. при наступлении в подформе ЗаказаноТовараПодформа следующих событий:
- обновления (изменения) суммы в одной из строк или добавления строки — событие После обновления подформы;
- удаления строки — событие После подтверждения Del подформы.
Сформируем макрос ОбщаяСумма.
Макрос ОбщаяСумма состоит из двух макрокоманд Задать-Значение. Первая макрокоманда непосредственно рассчитывает общую сумму с помощью функции DSum:
DSum(«[Cyммa]»;»[3aкaзaнoToвapa]»;»[Koд3aкaза] = [Forms] ! [Заказы] ! [КодЗаказа]»)
Как видно, вычисленное функцией значение присваивается полю ОбщаяСумма в форме Заказы. При этом используется полное имя поля — [Forms]![Заказы]![ОбщаяСумма] поскольку обращение к нему производится из подформы.
Функция DSum работает так, что если отсутствуют записи, удовлетворяющие условию в функции DSum, то она получает значение Null. Поэтому вторая макрокоманда задает значение [ОбщаяСумма]=0 при условии, что в предыдущей макрокоманде был рассчитан Null.
Самую большую вычислительную работу в этом макросе выполняет функция DSum. Она суммирует поля Сумма в таблице ЗаказаноТовара, отбирая записи по условию [КодЗаказа] : =[Forms]![Заказы]![КодЗаказа], т.е. отбирает только те записи, которые относятся к текущему заказу.
Приведем синтаксис (правило записи) функции DSum:
DSum («Что суммировать»; «Где суммировать»; «Условие отбора суммируемых записей»)
Теперь обеспечим вызов построенного макроса, т.е. припишем его событиям подформы ЗаказаноТовараПодформа.
1. Откройте форму ЗаказаноТовараПодформа в режиме Конструктора, выделите ее кнопкой и затем откройте ее свойства.
2. В закладке Событиянайдите свойства После обновления и После подтверждения Del и присвойте им имя созданного макроса Заказы.ОбщаяСумма и закройте форму.
3. Проверьте работу формы Заказы: при изменении строки заказа, добавлении или удалении строки общая сумма будет пересчитываться.
Добавление поля подстановки или поля списка значений в веб-приложении Access
Важно Корпорация Майкрософт больше не рекомендует создавать и использовать веб-приложения Access в SharePoint. В качестве альтернативного средства для бизнес-решений, не требующих дополнительного программирования и работающих в браузере и на мобильных устройствах, рекомендуется использовать Microsoft PowerApps.
Поле подстановки используется для поиска в одной таблице значений, которые можно использовать в другой таблице. Поле подстановки может служить источником значений для раскрывающегося списка и использоваться для упрощения ввода данных в поле. Пусть, например, вы хотите создать список 50 штатов США, чтобы пользователи могли выбирать штат в списке, а не вводить его название. С помощью мастера подстановок в Access можно создать поле подстановки для названия штата.
В этой статье
Создание поля подстановки
Если ранее вы использовали шаблон для создания приложения или добавления таблицы, возможно, в Access уже созданы отношения подстановки между таблицами. Чтобы проверить наличие полей подстановки, откройте таблицу в режиме конструктора в Access и найдите в столбце Тип данных тип данных Подстановка.
Использование мастера подстановок в веб-приложении Access:
В классическом приложении Access откройте таблицу в режиме конструктора.
В первой пустой строке списка полей введите название нового поля подстановки и щелкните Подстановка в столбце Тип данных. Будет запущен мастер подстановок.
Важно: В веб-приложении Access следует сразу же после добавления поля настроить для него тип данных «Подстановка». Если вы измените тип данных поля на тип «Подстановка», вам не удастся сохранить изменения структуры таблицы, даже если в поле не было значений. Это ограничение распространяется только на веб-приложение.
Щелкните Поле подстановки должно получать значения из другой таблицы или запроса.
Выберите таблицу или запрос, который нужно использовать в качестве источника данных.
В списке Выберите значение, которое должно отображаться в поле подстановки выберите необходимое поле или запрос для данных подстановки.
В списке Отсортировать элементы в поле подстановки? укажите, как сортировать значения.
Выберите, какое действие нужно выполнить при удалении записи из таблицы.
Примечание: Лучше всего установить флажок Запретить удаление, если существуют соответствующие записи…, поскольку при этом сохранится целостность данных. Применять другие параметры следует с осторожностью.
Нажмите кнопку ОК и сохраните изменения в таблице.
Создание поля списка значений
Вы можете создать список значений вместо использования существующего поля или запроса в качестве источника.
В классическом приложении Access откройте таблицу в режиме конструктора.
Важно: В веб-приложении потребуется использовать новое поле. Если вы измените тип данных поля на тип «Подстановка», вам не удастся сохранить изменения структуры таблицы, даже если в поле не было значений.
Добавьте новое поле и выберите тип данных Подстановка. Будет запущен мастер подстановок.
Установите флажок Будет введен фиксированный набор значений.
Введите по одному значению в каждую строку, а затем нажмите кнопку ОК.
Сравнение поля со списком и элемента управления с автозаполнением
В следующем представлении:
Для поля Зона доставки используется элемент управления с автозаполнением. Как только пользователь введет первую или несколько первых букв зоны, будет отображено первое соответствие в списке. Элемент управления с автозаполнением следует применять, если пользователи уже знают, что они ищут, и не хотят полностью просматривать длинный список. Дополнительные сведения см. в статье Добавление элемента управления автозаполнением в представление.
Для поля Штат используется элемент управления «поле со списком». Нажмите кнопку со стрелкой вниз, чтобы увидеть весь список значений. Поле со списком следует применять, когда пользователи сразу должны видеть все варианты выбора. Дополнительные сведения см. в статье Добавление поля со списком в представление.
Добавление элемента управления автозаполнением в представление веб-приложения Access
Важно Корпорация Майкрософт больше не рекомендует создавать и использовать веб-приложения Access в SharePoint. В качестве альтернативного средства для бизнес-решений, не требующих дополнительного программирования и работающих в браузере и на мобильных устройствах, рекомендуется использовать Microsoft PowerApps.
В веб-приложениях Access по мере ввода текста в элементы управления с автозаполнением выводятся варианты, помогающие найти нужные значения. В длинном списке похожих элементов может быть сложно найти правильное значение, но элементы управления с автозаполнением упрощают эту задачу. Например, если в этом элементе управления с автозаполнением для зон поставки ввести «м», то появятся четыре варианта.
Если к «м» добавить «о», список сузится только до слова «Москва». Если ввести «ме», в поле не отобразится ни одного варианта.
Примечание: Элементы управления с автозаполнением доступны только для веб-приложений Access. Их нет в классических базах данных Access.
Добавление к представлению элемента управления автозаполнением
Чтобы добавить элемент управления с автозаполнением, измените представление в Access и добавьте элемент из коллекции элементов управления.
Запустите Access и откройте веб-приложение.
Щелкните заголовок таблицы в левой области средства выбора таблицы и выберите представление таблицы в средстве выбора представления.
В этом примере «Задачи» — это таблица, а «Список» — это ее представление, к которому вы хотите добавить элемент управления с автозаполнением.
Нажмите кнопку Изменить в центре экрана, чтобы открыть представление в режиме конструктора.
В разделе Представление щелкните Конструктор > Элемент управления автозаполнением.
Расположите элемент управления с автозаполнением в нужном месте.
При необходимости добавьте элемент управления «Подпись», нажав кнопку подписи в коллекции элементов управления, и расположите подпись рядом с элементом управления с автозаполнением. Введите подпись, в которой объясняется, как использовать элемент управления с автозаполнением.
Щелкните элемент управления с автозаполнением, добавленный на бланк, и щелкните значок Данные рядом с ним, чтобы отобразить его свойства. Здесь можно привязать его к источнику данных.
Чтобы привязать элемент управления с автозаполнением к полю, в котором будет храниться выбранное значение, щелкните Данные и выберите нужное поле.
Щелкните Источник строк и выберите таблицу или запрос со значениями, которые должны появляться по мере ввода символов в элементе управления. После выбора таблицы или запроса Access отображает дополнительные свойства.
В поле Связанное поле выберите поле, содержащее значения из списка, которые вы хотите хранить. Связанное поле — это значение, которое Access хранит в поле «Данные», определенном ранее. В некоторых случаях значением является идентификатор (в зависимости от настройки таблиц и полей подстановки). В поле Поле основного отображения выберите поле, содержащее значения из связанной таблицы или запроса, которые вы хотите отобразить. Это значения, которые пользователи будут видеть при использовании этого элемента управления в браузере.
Чтобы сохранить изменения представления, нажмите кнопку Сохранить на панели быстрого доступа.
Использование элемента управления с автозаполнением в браузере
При вводе текста в элементе управления с автозаполнением:
Список будет сужаться по мере ввода символов.
При поиске не учитывается регистр символов.
Если будет найдено более 8 совпадений, вам будет предложено указать более подробные условия. В этом случае введите больше символов.
Настройка дополнительных параметров элемента управления с автозаполнением
В строке Значение по умолчанию введите значение, которое будет по умолчанию использоваться для новой записи. Если вы используете значение идентификатора в качестве связанного поля, необходимо указать соответствующее значение из связанной таблицы.
В поле Всплывающее окно можно выбрать представление, которое будет выводиться в новом окне, если щелкнуть значение в поле (за исключением режима таблицы). При добавлении имени представления, которое будет открываться во всплывающем окне, оно форматируется как гиперссылка в браузере, чтобы показать, что его можно щелнуть.
Например если нажать имя пользователя в представлении списка, отобразятся все сведения этого пользователя (как при выборе записи этого пользователя). Если в представлении содержатся соответствующие элементы, то эти строки также отобразятся во всплывающем окне.
В раскрывающемся меню Поле дополнительного отображения можно выбрать дополнительное поле, которое будет отображаться снизу каждого элемента. Например, в записи сотрудника есть поле для должности — вы можете выбрать его в качестве поля дополнительного отображения.
Вот пример поля дополнительного отображения. Должность Дарьи Беляковой, «Управляющий редактор», запрашивается из поля «Должность» в записи Дарьи и отображается под ее именем. Поле дополнительного отображения доступно только в поле с автозаполнением при выборе значения.
В окне «Свойства форматирования» введите в поле Подсказка описание, чтобы было легче понять, как использовать элемент управления с автозаполнением. По умолчанию отображается текст «Найти. «, но его можно заменить более подходящим, например таким как «Введите имя сотрудника».
Поле со списком — это альтернатива полю с автозаполнением. С помощью него можно просматривать раскрывающийся список элементов, например названий стран и регионов. Дополнительные сведения о полях со списками см. в статье Добавление к представлению поля со списком.
Автоматическая подстановка значения в поле ввода
Частсг для заполнения некоторых полей таблиц требуется вычислить выражение на основе данных в других полях этой таблицы и, возможно, связанных с ней таблиц. Чтобы при вводе данных не вычислять это значение каждый раз самостоятельно, требуется создать форму для ввода данных, выполняющую необходимые вычисления автоматически. Это позволит застраховаться от ошибок при вычислениях и сократит время ввода данных.
Представим себе такой пример. Есть таблица «Товары» со списком товаров, где для каждого товара указана его цена (таблица содержит поля «НаименованиеТовара» и «Цена», и первое поле является ключевым). Есть другая таблица «Заказы» со списком заказов на эти товары, содержащая информацию о типе и количестве заказанного товара (поля «НаименованиеТовара» и «Количество»), а также о его стоимости (поле «Сумма»). Таблица «Заказы» связана с таблицей «Товары» по полю «НаименованиеТовара» отношением «один-ко-многим». Требуется создать форму для добавления новых заказов так, чтобы при выборе необходимого товара из предложенного списка и после ввода заказанного количества в поле «Сумма» автоматически подставлялось значение стоимости всего заказа для данного товара.
Для решения поставленной задачи требуется выполнить следующие действия:[ Реализация этого примера — небольшая база данных Заказы.mdb — есть на компакт-диске, который является дополнительным приложением к комплекту книг о Microsoft Office 2002 издательства «БХВ-Петербург» и распространяется отдельно. ]
- Создайте запрос, содержащий поле «Цена» из таблицы «Товары» и все поля из таблицы «Заказы». Сохраните его с именем «Заказано».
- Создайте форму «Заказы» на основе запроса «Заказано».
- Поместите в форму элемент управления Список, связанный с полем «НаименованиеТовара» источника данных формы.
Замечание
Это можно выполнить с помощью окна Список полей (Filed List) (см. гл. 5), предварительно указав в режиме Конструктора таблицы «Заказы» для поля «НаименованиеТовара» на вкладке Подстановка (Lookup) значение Поле со списком (Combo Box) для свойства Тип элемента управления (Display Control) и имя таблицы «Товары» в качестве значения свойства Источник,строк (Row Source).
- Поместите в форму текстовые поля, связанные с полями «Количество» и «Сумма» источника данных формы.
- Для поля «Количество» в окне свойств раскройте вкладку События (Events). Для события После обновления (After Update) создайте процедуру обработки события (см. разд. «Динамическая фильтрация данных» этой главы) со следующим содержанием:
Private Sub Количество_А£terUpdate()
Сумма = Цена * Количество End Sub
Таким образом, после ввода значения в поле «Количество» в поле «Сумма» будет автоматически подставлена вычисленная стоимость заказа. А поскольку поле «Сумма» является присоединенным к одноименному полю в таблице «Заказы», вычисленное значение автоматически попадет в таблицу.
Не всегда вычисляемые значения требуется сохранять в самих таблицах. Чаще всего достаточно только отобразить результат вычисления в вычисляемом поле формы или запроса для информирования пользователя. Ведь это значение можно вычислить в любой момент на основе данных, хранящихся в таблицах, и не потребуется выполнять проверку на правильность сохраненного значения при изменении значений полей, использованных в его вычислении, в других формах или непосредственно в таблице (см. также разд. «Создание вычисляемых полей» данной главы и разд. «Вычисления на выделенных записях таблицы»гл. 8).