Организация простого поиска значений в базе данных
Автор час
24.06.2008 г.
Законченное приложение, как правило, имеет систему поиска данных и справочную систему. Для начала займемся поиском. Поиск необходимо производить порой по различным параметрам - например, если это товар: 1 Поиск по наименованию 2 Поиск по артикулу 3 Поиск по штрихкоду 4 Поиск по цвету 5 Поиск по производителю 6 Поиск по срокам годности и т.д. и т.п. Создадим простую поисковую систему для поиска по различным критериям.
Примером для нас будет являться обычная записная книжка, которая имеет множество полей для ввода данных и соответственно множество полей для поиска нужных данных. Это: Имя, Фамилия, Адрес, Домашний телефон, и т.д. Начало начал - создание таблицы базы - в нашем случае она будет называться "Адреса". В ней будут храниться все вносимые данные. На основе этой таблицы создаётся форма, она будет иметь имя: "Основная". Далее нам понадобятся ещё две формочки. Форма "Поиск" для ввода искомого и форма для отображения результатов поиска в виде таблички с найденными значениями ("Результат_Поиска").
Поиск начинается с нажатия кнопки с рисунком лупы на основной форме. Эта кнопка просто открывает форму "Поиск" для ввода искомого: DoCmd.OpenForm "Поиск". Рассмотрим всю цепочку поиска на примере поиска названия организации. В поле поиска вводится любое количество символов искомого. Например, для поиска организации Стоматология "Пофи -Дент-плюс" достаточно ввести : "Ден". Далее нажимаем кнопку "Организация" - в событии нажатия этой кнопки записано
Call nachat("Организация") - то есть переход в функцию "nachat" и передать туда название поля
в котором следует вести поиск- (поле "Организация").
Центральным звеном поисковой цепочки является функция "Poisk", которая создаёт запрос. (Этот запрос служит источником строк для формы: "Результат_Поиска"). Данная функция вынесена в отдельный модуль. Модули программы располагаются на последней вкладке окна базы данных.
В эту функцию передают название таблицы "Адреса" и название поля (переменная "Pole") в которых необходимо вести поиск.
Call Poisk("Адреса", Pole) Этой функцией в базе создаётся запрос, который является источником строк для формы "Результат_Поиска", Также по окончании создания запроса на экран выводится сама форма"Результат_Поиска". В ней мышкой тычем из всего найденного - в нужную строку. Основная форма переходит на данную запись, и мы наслаждаемся результатами поиска.
В этом же модуле объявляем общедоступные переменные, они служат для повторного поиска. Вдруг понадобиться второй раз искать то, что только что искали...
Public Iskat_v_Pole As String ' В эту переменную записываем поле поиска Public chto_iskat As String ' В эту переменную записываем строку поиска
Что бы не загромождать код (для прозрачности) отсутствуют обработчики ошибок. Комментарии к строкам кода - расположены внутри процедур и функций.
Просмотров: 25013
Коментарии (14)
Законченное приложение, как правило, имеет систему поиска данных и справочную систему. Для начала займемся поиском. Поиск необходимо производить порой по различным параметрам - например, если это товар: 1 Поиск по наименованию 2 Поиск по артикулу 3 Поиск по штрихкоду 4 Поиск по цвету 5 Поиск по производителю 6 Поиск по срокам годности и т.д. и т.п. Создадим простую поисковую систему для поиска по различным критериям.
Примером для нас будет являться обычная записная книжка, которая имеет множество полей для ввода данных и соответственно множество полей для поиска нужных данных. Это: Имя, Фамилия, Адрес, Домашний телефон, и т.д. Начало начал - создание таблицы базы - в нашем случае она будет называться "Адреса". В ней будут храниться все вносимые данные. На основе этой таблицы создаётся форма, она будет иметь имя: "Основная". Далее нам понадобятся ещё две формочки. Форма "Поиск" для ввода искомого и форма для отображения результатов поиска в виде таблички с найденными значениями ("Результат_Поиска").
Поиск начинается с нажатия кнопки с рисунком лупы на основной форме. Эта кнопка просто открывает форму "Поиск" для ввода искомого: DoCmd.OpenForm "Поиск". Рассмотрим всю цепочку поиска на примере поиска названия организации. В поле поиска вводится любое количество символов искомого. Например, для поиска организации Стоматология "Пофи -Дент-плюс" достаточно ввести : "Ден". Далее нажимаем кнопку "Организация" - в событии нажатия этой кнопки записано
Call nachat("Организация") - то есть переход в функцию "nachat" и передать туда название поля
в котором следует вести поиск- (поле "Организация").
Центральным звеном поисковой цепочки является функция "Poisk", которая создаёт запрос. (Этот запрос служит источником строк для формы: "Результат_Поиска"). Данная функция вынесена в отдельный модуль. Модули программы располагаются на последней вкладке окна базы данных.
В эту функцию передают название таблицы "Адреса" и название поля (переменная "Pole") в которых необходимо вести поиск.
Call Poisk("Адреса", Pole) Этой функцией в базе создаётся запрос, который является источником строк для формы "Результат_Поиска", Также по окончании создания запроса на экран выводится сама форма"Результат_Поиска". В ней мышкой тычем из всего найденного - в нужную строку. Основная форма переходит на данную запись, и мы наслаждаемся результатами поиска.
В этом же модуле объявляем общедоступные переменные, они служат для повторного поиска. Вдруг понадобиться второй раз искать то, что только что искали...
Public Iskat_v_Pole As String ' В эту переменную записываем поле поиска Public chto_iskat As String ' В эту переменную записываем строку поиска
Что бы не загромождать код (для прозрачности) отсутствуют обработчики ошибок. Комментарии к строкам кода - расположены внутри процедур и функций.