Организация простого поиска значений в базе данных
Автор час   
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   ' В эту переменную записываем строку поиска

Что бы не загромождать код (для прозрачности) отсутствуют обработчики ошибок.
Комментарии к строкам кода - расположены внутри процедур и функций.

 

 


Download now
Просмотров: 25030

  Коментарии (14)
 1 Написал(а) Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , в 19:59 28.06.2008
Здравствуйте. Нужна помощь и поддержка. Есть форма, где имеется список с данными. как сделать чтобы при выборе любой строчки оттуда, появлялись соответствующие этой строчке данные(у меня таблица с названиями компаний и продукты, которые компании выпускают. я хочу сделать при выборе продукта, чтобы появлялась компания, производящая его)? извините за глупый вопрос. заранее спасибо 
 
Вопросы лучше задавать на форуме http://hiprog.com/forum 
 2 Написал(а) kolt, в 08:53 24.07.2008
:)
 3 Написал(а) kolt, в 08:25 24.07.2008
:)
 4 Написал(а) Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , в 20:16 02.08.2008
Отличная идея, очень понравилось! Но почему-то в моей базе работает наполовину: находит искомое, но не отображается на главной форме. Но в примере все работает...
 5 Написал(а) час, в 16:31 06.08.2008
Может пришлёте посмотреть? 
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script  
или.......
 6 Написал(а) Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , в 22:03 12.08.2008
Точно идея отличная! Но имею такую же проблему как у Zheka... вчем может быть ошибка?
 7 Написал(а) час, в 07:52 14.08.2008
Расчёт был на вашу любознательность. 
При запуске в режиме отладчика секрет раскрывается сразу..... 
или вот ветка: 
 
http://hiprog.com/forum/read.php?id_forum=1&id_theme=3683&page=1
 8 Написал(а) Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , в 15:50 05.10.2008
Спасибо, оценил результат вашего труда, высший уровень!
 9 Написал(а) Алексей, в 13:48 13.11.2008
Вопрос....вот в этой базе есть такая вещь 
 
Forms![Основная].RecordsetClone.FindFirst "[КодАдреса]=" & Me![KOD] 
 
откуда берется ME![KOD] , это надо гдето прописать или что 
 
Делаю в своей безе тоже самое....но записи на главной форме не обновляюся....в чем причина???
 10 Написал(а) час, в 17:34 25.11.2008
Алексей, 
расчёт был на вашу любознательность.  
При запуске в режиме отладчика секрет раскрывается сразу.....  
или вот ветка:  
 
http://hiprog.com/forum/read.php?id_forum=1&id_theme=3683&page=1

Законченное приложение, как правило, имеет систему поиска данных и справочную систему.
Для начала займемся поиском. Поиск необходимо производить порой по различным параметрам -
например, если это товар:
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   ' В эту переменную записываем строку поиска

Что бы не загромождать код (для прозрачности) отсутствуют обработчики ошибок.
Комментарии к строкам кода - расположены внутри процедур и функций.

 

 


Download now
Просмотров: 25030

  Коментарии (14)
 11 Написал(а) Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , в 07:54 16.12.2008
:)
 12 Написал(а) Александр, в 16:52 30.12.2010
Просто великолепно!!! 
Спасибо.
 13 Написал(а) Ирина, в 13:40 09.09.2011
Здравствуйте. Очень заинтересовала ваша форма. Прости те пож-та сразу признаюсь что я чайник. Какой должен быть алгоритм действий чтобы эту форму вставить в свою базу данных и можно ли сделать для каждой таблице свою форму поиска или както галочками отметить..например две таблицы в одной адреса,в другой бд по оборудованию имеющемуся на этих аддресах,таблицы связаны между собой кодом объекта(ключевое поле)
 14 Написал(а) Александр К., в 04:39 25.03.2012
Спасибо! Все работает, но только у меня почему-то размеры окна "Результаты_поиска" размеры по вертикали выбираются сами и могут быть во весь экран, а могут быть в одну строчку, что очень не удобно и не эстетично, подскажите в чем может быть проблема. Форму создавал сам, но строго по образцу. По настройкам все проверил но все равно работает не так.

Добавить коментарий
Имя:
E-mail
Коментарий:



Код:* Code