форма для поиска в access
Поисковое поле со списком в Access
Поле со списком в access может стать полем для поиска. Поисковое поле со списком в Access может сильно облегчить вам работу с данными.
Существует несколько способов создания поискового поля, самый распространённый из них – при помощи мастера для элемента управления «Поле со списком».
Рассмотрим способ создания поля для поиска вручную. В режиме конструктора формы добавим свободное поле в примечание формы (кнопка «Мастера» должна быть отжата):
Зададим следующие свойства для свободного поля «ПолеПоиск» (для этого надо выделить его в режиме конструктора и нажать клавишу F4):
Перейдём на вкладку «Данные» свойств поля со списком. Значения свойства «Данные» оставим пустым. В «Источнике строк» мы выбираем подстановку из поля «ФИО» базового запроса «зап_СписокДляФормы» (этот же запрос «даёт» данные для текущей формы и поле «ФИО» запроса является базовым для поля «ФИО» формы). Свойства «Ограничиться списком», «Автоподстановка» и «Доступ» принимают значение «да».
На вкладке «События» определяем для свойства «После обновления» макрос «МакросПоиск».
Макрос состоит всего из двух команд:
Форма с полем для поиска готова. Для того, чтобы найти нужную нам запись с конкретным человеком, надо щёлкнуть мышкой внутри поля поиска. Потом можно вводить фамилию, имя и отчество.
По мере введения символов программа будет автоматически предлагать подходящие записи. Когда выбрана нужная запись, можно нажать клавишу «Enter» или «Tab». Курсор будет автоматически переведён в область данных формы на нужную запись.
Теперь нажимаем «Enter» или «Tab» и фокус ввода перейдёт на нужную нам запись в область данных формы:
Создание формы для поиска записи из таблицы

Добрый день! Создаю форму поиска с всплывающими подсказками. Попробую, выложить строки кода.
Создание формы для поиска
Добрый день. Я только начала работать с программой access. Уже научилась создавать запросы и формы.
Создание формы для поиска
Доброго времени суток коллеги! Как то понадобилось мне создать форму для поиска по всем записям.
Решение
Вложения
![]() | Очень простой поиск.rar (20.0 Кб, 3368 просмотров) |
Решение
Вложения
![]() | Супер простой поиск.rar (19.6 Кб, 5246 просмотров) |
Решение
Очень крутой способ, спасибо!
Подскажите пожалуйста, как еще можно реализовать фильтр по множественному выбору значений одного поля?
То есть, если нужно выбрать сразу несколько кодов ОКПО?
Решение
См. приложение.
Зажав Ctrl выбираешь в списке несколько ОКПО, во втором списке данные будут отфильтрованы.
Вложения
![]() | db_ОКПО.rar (14.6 Кб, 1825 просмотров) |
Не понял.
ИЛИ выбирать несколько значений(хоть числовых, хоть текстовых, не важно)
ИЛИ при вводе(т.е. событие Change поля) значения в поле менять значения в списке..
Или Вы имеете ввиду, что:
1. Выбрать несколько значений ОКПО
2. Вводя во второе поле значение, фильтровать исходя из УЖЕ выбранных ОКПО?
Вложения
![]() | db_ОКПО.rar (12.7 Кб, 338 просмотров) |
Вложения
![]() | db_ОКПО_2.rar (14.0 Кб, 499 просмотров) |
Вложения
![]() | db_ОКПО_3.rar (13.4 Кб, 892 просмотров) |
Виктор, вероятно, что есть и лучше(быстрее по выполнению) способ.
Это был лишь вариант..
Этот код можно поместить на кнопку или на процедуру AfterUpdate каждого из контролов условий формы
Функция NZ здесь применена для выполнения условия показывать все, если какой-то параметр не выбран.
Код для населенного пункта также учитывает возможность выбрать все, если он не задан.
Имена контролов формы и полей таблицы следует исправить на истинные.
И последнее. Вместо текстового имени населенного пункта, лучше использовать его числовой код из справочника населенных пунктов. Если такого справочника нет, надо его создать. Иначе вас ждут неожиданные и трудноуловимые ошибки в разном написании одного и того же пункта
Поиск записей
По мере роста базы данных при поиске определенных записей вам придется не только быстро взглянуть на таблицу. В этой статье вы узнаете о пяти способах поиска определенных записей в соответствии с вашими потребностями.
В этой статье
Просмотр всех записей
Вы можете перемещаться по записям с помощью клавиши TAB, чтобы перемещаться по одной записи по одной, чтобы найти ее. Вы также можете просматривать записи в таблице Режим таблицы с помощью кнопок навигации по записям. Кнопки навигации по записям находятся в нижней части таблицы или формы.
1. Перейти к первой записи
2. Перейти к предыдущей записи
3. Поле текущей записи
4. Перейти к следующей записи
5. Перейти к последней записи
6. Открытие новой (пустой) записи
7. Индикатор фильтра
Щелкнув поле «Текущая запись», можно ввести номер записи и нажать ввод, чтобы перейти к этой записи. Номер записи последовательно учитывается с начала формы или таблицы. Оно не соответствует любому значению поля.
Чтобы узнать, применен ли фильтр, см. кнопку индикатора фильтра. Если фильтр не применен или все фильтры были очищены, в нем отображается «Нет фильтра». Если фильтр отображается, можнонажать эту кнопку, чтобы удалить фильтр. Аналогично, если отображается «Без фильтра», можно нажать эту кнопку, чтобы применить последний использованный фильтр (если есть).
При вводе текста в поле поиска при вводе каждого символа в реальном времени выделяется первое совпадающие значения. С помощью этой функции можно быстро найти запись с совпадающих значениями.
Переход к определенной записи
Вы можете перейти к определенной записи в Access, когда знаете, какую запись нужно найти. Поле «Перейти» позволяет выбрать определенную запись из списка и обычно добавляется в формы.
Чтобы перейти к определенной записи, щелкните стрелку справа от кнопки «Перейти», а затем выберите запись из списка.
Примечание: Если вы знаете первые несколько символов записи, по которой нужно перейти, введите их в поле «Перейти», чтобы быстро найти ее.
В поле «Перейти» отображается достаточно данных для уникальной идентификации каждой записи. При выборе записи из списка Access отображает остальные данные в основной области формы.
Поиск определенной записи
Конкретную запись в таблице или форме можно найти с помощью вкладки «Найти» в диалоговом окне «Найти и заменить». Это эффективное решение для поиска определенной записи, если она соответствует определенным условиям, таким как условия поиска и операторы сравнения, такие как «равно» или «содержит».
Примечание: Диалоговое окно «Поиск и замена» можно использовать только в том случае, если в таблице или форме отображаются данные. Это справедливо даже в том случае, если видимых записей нет, поскольку был применен фильтр.
Откройте таблицу или форму, а затем щелкните поле, в которое нужно в поиске.
На вкладке Главная в группе Найти нажмите кнопку Найти. Также можно нажать клавиши CTRL+F.
Появится диалоговое окно «Поиск и замена» с выбранной вкладке «Найти».
В поле «Найти что» введите значение, по которому нужно искать.
Чтобы изменить поле для поиска или поиска по всей таблице, выберите соответствующий вариант в списке «Поиск в».
Совет: Список «Совпадение» представляет оператор сравнения (например, «равно» или «содержит»). Чтобы расширить область поиска, в списке «Совпадение» выберите «С любой частью поля».
В списке Поиск выберите вариант Всеи нажмите кнопку Найти далее.
Когда выделен элемент, для которого вы ищете, нажмите кнопку «Отмена» в диалоговом окне «Найти и заменить», чтобы закрыть диалоговое окно. Выделяются записи, которые соответствуют вашим условиям
Дополнительные сведения об использовании диалоговых окна «Поиск и замена» см. в статье «Использование диалоговых окна «Поиск и замена» для изменения данных.
Фильтрация для ограничения количества записей
Вы можете отфильтровать записи, чтобы отфильтровать записи, которые соответствуют определенным условиям, и операторы сравнения. Например, чтобы быстро сузить отображаемую запись, щелкните правой кнопкой мыши поле, значение которого вы хотите найти, и выберите «Равно», «Не равно», «Содержит» или «Не содержит» в нижней части меню. Фильтр можно включить или отключить, что упрощает переключение между отфильтрованным и неотфильтрованным представлениями одинаковых данных. В отличие от поиска, фильтр ограничивает только отображаемую запись.
Чтобы применить фильтр, основанный на выборе, откройте таблицу или форму.
Чтобы убедиться в том, что таблица или форма еще не отфильтровына, на вкладке «Главная» в группе «Фильтр сортировки &» нажмите кнопку «Дополнительные фильтры» и выберите команду «Очистить все фильтры», если эта команда доступна.
Перейдите к записи, которая содержит значение, которое вы хотите использовать в фильтре, а затем щелкните внутри столбца (в представлении таблицы) или управления (в представлении формы, отчета или макета). Для фильтрации по частично выбранному символу выберите только нужные символы.
На вкладке Главная в группе Сортировка и фильтр нажмите кнопку Выделение и щелкните нужный фильтр.
Чтобы отфильтровать другие поля по выделенному фрагменту, повторите шаги 3 и 4.
Дополнительные сведения о применении фильтра см. в статье «Применение фильтра для просмотра отдельных записей в базе данных Access».
Создание запроса для поиска определенной записи
Методы поиска и фильтрации записей очень полезны для поиска определенных записей для конкретного дела. Однако вам может потребоваться регулярно выполнять такие же операции поиска или фильтрации. Вместо того чтобы воспроизводить каждый раз набор шагов поиска и фильтрации, вы можете создать запрос. Запрос — это мощный и гибкий способ поиска определенных записей, так как он позволяет выполнять настроенные поисковые запросы, применять настроенные фильтры и сортировать записи. Вы можете создавать собственные запросы, чтобы сосредоточиться на конкретных записях и отвечать на определенные вопросы. Созданный запрос можно сохранить и использовать повторно, а также использовать в формах и отчетах.
При использовании запроса для поиска или фильтрации используются условия, основанные на типе данных, для которых вы ищете. Различные типы данных хранятся как данные разных типов. Например, дни рождения хранятся в виде данных даты и времени, а имена — как текстовые.
Иногда не удается найти определенную запись, которая существует. Это может произойти при просмотре записей в форме или запроса, которые не отображаются из-за значения определенного поля. В следующем примере показано, как использовать запрос для поиска записей.
Предположим, что вы используете базу данных, созданную с помощью шаблона «Проблемы Access», для отслеживания проблем. В таблице «Вопросы» есть поле «Состояние», которое показывает, активна ли конкретная проблема (активна, решена или закрыта). Чтобы создать запрос, отображающий проблемы, состояние которых закрыто, с помощью указанных ниже действий.
На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
Дважды щелкните «Проблемы»и нажмите кнопку «Закрыть».
В конструкторе запросов дважды щелкните звездочка (*)в таблице «Вопросы». Это обеспечивает отображение в запросе всех полей из возвращаемой записи.
В первом столбце на сетке конструктора в строке «Поле» появится поле «Проблемы».* Это означает, что должны быть возвращены все поля из таблицы «Вопросы».
В конструкторе запросов дважды щелкните «Состояние» в таблице «Вопросы».
Состояние отображается во втором столбце на сетке конструктора в строке «Поле».
Во втором столбце в сетке конструктора сдайте и в строке «Показать» один из этих полей. Это позволяет убедиться, что в запросе не отображается поле «Состояние».
Если не сделать этого, поле «Состояние» будет отображаться в результатах запроса два раза.
Во втором столбце в строке «Условия» введите =»Закрыто». Это критерий поиска. Таким образом можно убедиться, что запрос возвращает только те записи, для которых значением состояния является «Закрыто».
Примечание: В этом примере используется только одно критерий поиска. Вы можете использовать множество критериев поиска для любого поиска, добавив условия к дополнительным полям, используя строку или строку ниже или ниже.
Запрос готов к запуску и выглядит вот так:
На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Примечание: Если вы еще не начали отслеживание проблем и, следовательно, имеете данные в таблице «Вопросы» и у вас установлено состояние по крайней мере одной проблемы —Закрыто, запрос не будет возвращать никаких результатов. Однако вы можете сохранить запрос и использовать его в любое время в будущем.
Нажмите сочетание клавиш CTRL+S, чтобы сохранить запрос.
В диалоговом окне «Сохранить как» введите имя запроса в поле «Имя запроса», например «Закрытые вопросы», и нажмите кнопку «ОК».
Теперь у вас есть запрос, отображающий проблемы, состояние которых закрыто.
Дополнительные информацию о том, как создавать запросы для поиска записей, см. в статье «Создание простого запроса на выборки».
Дополнительные информацию о критериях поиска и фильтрации см. в статье «Примеры критериев запроса».
Как сделать форму поиска в access?
Поле со списком в access может стать полем для поиска. Поисковое поле со списком в Access может сильно облегчить вам работу с данными.
Существует несколько способов создания поискового поля, самый распространённый из них – при помощи мастера для элемента управления «Поле со списком».
Рассмотрим способ создания поля для поиска вручную. В режиме конструктора формы добавим свободное поле в примечание формы (кнопка «Мастера» должна быть отжата):
Зададим следующие свойства для свободного поля «ПолеПоиск» (для этого надо выделить его в режиме конструктора и нажать клавишу F4):
Перейдём на вкладку «Данные» свойств поля со списком. Значения свойства «Данные» оставим пустым. В «Источнике строк» мы выбираем подстановку из поля «ФИО» базового запроса «зап_СписокДляФормы» (этот же запрос «даёт» данные для текущей формы и поле «ФИО» запроса является базовым для поля «ФИО» формы). Свойства «Ограничиться списком», «Автоподстановка» и «Доступ» принимают значение «да».
На вкладке «События» определяем для свойства «После обновления» макрос «МакросПоиск».
Макрос состоит всего из двух команд:
Форма с полем для поиска готова. Для того, чтобы найти нужную нам запись с конкретным человеком, надо щёлкнуть мышкой внутри поля поиска. Потом можно вводить фамилию, имя и отчество.
По мере введения символов программа будет автоматически предлагать подходящие записи. Когда выбрана нужная запись, можно нажать клавишу «Enter» или «Tab». Курсор будет автоматически переведён в область данных формы на нужную запись.
Теперь нажимаем «Enter» или «Tab» и фокус ввода перейдёт на нужную нам запись в область данных формы:
Типичной задачей является организация более удобного чем последовательный перебор перехода по записям в форме, задавая значения каких-то полей записи, для ее поиска по ним. Например, в форме с информацией для большого количества сотрудников хотелось бы быстро перейти к карточке сотрудника с известной фамилией. Это можно сделать с помощью специального списка для выбора фамилии.
В разд. «Создание элементов управления с помощью панели элементов»гл. 5 мы упомянули о том, что при создании списка/поля со списком с помощью Мастера в форме, привязанной к источнику данных, Access предлагает сделать его средством перехода к нужной записи в форме. Рассмотрим пример создания такого списка:
Действие созданного поля со списком обеспечивается процедурой обработки события После обновления (After Update), сгенерированной мастером (см. также разд. «Создание процедур обработки событий»гл. 13).
Использование стандартных возможностей Access
Откроем форму «Покупатель» в режиме конструктора. С панели элементов перенесем пиктограмму Кнопка в нижнюю часть формы. Будет вызван мастер Создание кнопки. Выберем режимы Категории: Переходы по записями, Действия: Найти запись. Затем на кнопке разместим текст «Поиск фамилии», введя соответствующий текст в поле Текст. Далее в качестве названия кнопки введем ФИО. При работе с формой “Покупатель” при нажатии кнопки будет вызываться окно стандартного поиска и замены Access.
Замечание. Если не запускается мастер создания кнопок, его надо включить на панели инструментов.
В результате на форме появится кнопка «Поиск фамилии», при нажатии на которую выскакивает стандартное окно «Поиск и замена». При поиске кроме образца надо указать поле, в котором необходимо найти данные, а также указать степень совпадения.
Использование макроса
Для примера создадим подобную кнопку поиска для формы «Товар». Создадим поле для ввода начала названия товара. Откроем эту форму в режиме конструктора и перетащим туда пиктограмму Поле в нижнюю часть формы. Вызовем список свойств правой части поля (первоначально оно имеет обозначение Свободный) щелчком правой кнопки мыши и заменим Имя на Поиск – данное имя в дальнейшем будет использоваться. В строке состояния (свойство Текст строки состояния) введем текст: «Введите название товара или его первые буквы». Вызовем список свойств для левой части Поля (Надписи) и заменим Подпись также на Поиск. Закроем форму.
Созданный нами макрос будет работать следующим образом. Вначале выбирается поле Наименование таблицы ТОВАР для организации поиска. Затем по образцу из поля Поиск формы осуществляется поиск первой по порядку нужной нам записи. Затем фокус опять передается в поле Поиск для возможного продолжения поиска.
Закроем макрос и сохраним его с именем «Поиск товара». Теперь опять откроем форму «Товар» и перетащим туда макрос «Поиск товара». Появится кнопка с соответствующей подписью. Для поиска товара нужно ввести первые буквы названия товара, нажать кнопку «Поиск», будет найдена нужная запись (если она существует). Обратите внимание, то если ничего не вводить в окне Поиск, то при нажатии кнопки будет выдано сообщение об ошибке! В СУБД Access 2007 существуют способы обработки подобных ситуаций – макросы с условиями, но мы их рассматривать не будем.
Но таким образом можно найти лишь первую запись на введенную букву. Нетрудно организовать еще одну кнопку «Поиск далее». Для этого сделаем копию макроса «Поиск товара» через буфер обмена и назовем его «Поиск далее». С помощью конструктора изменим в новом макросе в аргументе строки НайтиЗапись свойство Первое вхождение с Да на Нет, Область поиска – Вниз. Теперь перетащим новый макрос в режиме конструктора в форму «Товар». Теперь будет идти поиск и последующих записей с тем же началом в поле Наименование.
Задание
Создание текстового поле в форме, которое ищет значение в таблице
При разработке формы в Access может потребоваться отобразить значение из таблицы или запроса, кроме того, с чем связана форма. Предположим, например, что у вас есть форма «Товары», привязанная к таблице «Товары». Однако после проектирования формы необходимо, чтобы в форме отображались имена контактов поставщиков для каждого товара — данные, которые находятся в таблице «Поставщики». Ниже показано, как использовать функцию DLookup для выполнения этой задачи. Вы можете изменить выражение на шаге 6 в соответствии со своими данными.
Добавление текстового окна
В области навигации щелкните правой кнопкой мыши форму, которую вы хотите изменить, и выберите в меню пункт «Конструктор».
На вкладке Конструктор в группе Элементы управления щелкните Поле.
Найдите в форме область, в которую вы хотите добавить поле, и перетащите указатель на форме, чтобы создать текстовое поле.
Щелкните правой кнопкой мыши текстовое поле и выберите в контекстном меню пункт Свойства.
В окне свойств щелкните вкладку «Все».
Установите для свойства «Control Source» следующее значение:
=DLookup(«[ContactName]»,»[Suppliers]»,»[SupplierID]=» & Forms! Продукты! SupplierID)
Сохраните изменения формы, а затем закройте лист свойств.
Это выражение выполняет поиск в таблице «Поставщики» и возвращает имя контакта поставщика, ид поставщика которого соответствует значению в средстве управления «ИД Поставщика» формы «Товары». Обратите внимание на то& как оператор&используется для сстройки третьего аргумента функции DLookup (третий аргумент — «[SupplierID]=» & Forms! Продукты! SupplierID). Распространенная ошибка, которую следует избегать, — это размещение кавычка вокруг всего аргумента, а не только вокруг текста, предшествующего&оператору.
Примечание: В качестве альтернативы функции DLookup можно создать новый запрос, включив в него только необходимые сведения. Запросы часто эффективнее, чем функции.





















