Поиск информации в базах данных. Установка фильтров
Цели работы:
Краткие сведения из теории
Логические выражения
Простое логическое выражение имеет вид:
< Поле> < Оператор сравнения> < Образец> , где
< Поле> – это имя поля в котором будет организован поиск,
< Оператор сравнения> – логические функции (=,<,>,<> и т.д.),
<
Образец>
– это любое значение из выбранного поля. Простые логические выражения объединяются в более сложные с помощью логических операций И и ИЛИ. Например, дана база данных Договор (
|
Имя поля |
Идентификатор поля |
Тип поля |
|
Код договора |
Kod_d |
numeric |
|
ИНН фирмы |
IIN_firm |
numeric |
|
Тип договора |
Tip_dogov |
character |
|
Дата заключения |
Data_zak |
date |
|
Город заключения |
City_zak |
character |
|
Дата вступл.в силу |
Data_vst |
date |
|
Дата окончания |
Data_hin |
date |
|
Предмет договора |
Predmet |
character |
|
Стоимость услуг |
Price |
numeric |
|
Тип расчета |
Tip_pric |
Character |
Примеры запросов к базе данных Договор:
IIN_firm = 5191000555
Kod_d > 27
Kod_d = 30 OR Kod_d = 37 OR Kod_d = 45
Tip_dogov = "Купли и продажи" AND Data_zak > Ctod("27.10.98")
Data_hin < Ctod("03.11.98")
Data_zak > Ctod("01.10.98") AND Data_zak < Ctod("01.11.98")
Tip_dogov = "Купли и продажи" OR Tip_dogov = "Аренда"
Поиск информации
Поиск записи в больших базах путем "листания" очень утомителен и не эффективен. В такой ситуации рекомендуется воспользоваться функцией поиска записи данных или группы записей.
В среде FoxPro существует несколько способов поиска информации:
Стандартный поиск (Locate) - наиболее универсальная команда, которая работает без индексов. В то же время, наличие активного индекса повышает скорость поиска по заданному критерию. При стандартном поиске можно составлять сложные критерии отбора, используя поля всех типов (включая memo). Команда Locate имеет следующий синтаксис:
LOCATE FOR <выражение1> [<диапазон>] [WHILE<выражение2>] , где В случае, если границы и Контекстный поиск выполняется для всех типов полей, включая Быстрый поиск (
SEEK (<значение>) Отфильтровать данные
SET FILTER TO <выражение>, где Работа с индексным фильтром – наиболее мощная возможность отбора записей.
Задание 1. Составьте не менее 10 логических выражений для поиска данных в базе данных (выбор базы данных сделать самостоятельно, по итогам выполнения предыдущих работ). 2. Выполните поиск данных с помощью команды
Технология работы
Стандартный поиск
Перед тем как начать поиск в первую очередь нужно открыть базу данных и вывести ее на просмотр (рис. 5.1).
Рис. 5.1. Записи базы данных в режиме просмотра
Далее выбрать команду Записьñ
Найти... Три точки позади имени директивы свидетельствуют о том, что FoxPro откроет диалоговое окно Найти (рис. 5.2).
Рис. 5.2. Диалоговое окно поиска данных В данном диалоговом окне устанавливаются критерии поиска, которым должны удовлетворять разыскиваемые записи данных. В распоряжении пользователя имеются три командные кнопки, служащие для определения этих критериев. При нажатии командной кнопки Диапазон... отрывается диалоговое окно (рис. 5.3).
Рис. 5.3. Определение области поиска В этом диалоговом окне определяется область базы данных, в которой FoxPro должна проводить поиск. Если поиск необходимо провести по всем записям данных, содержащимся в базе данных, то следует оставить предустановку Все. Можно ограничить зону поиска только записями следующими после текущей, указав при этом число включенных в поиск записей. Для этого нужно нажать селекторную кнопку Следующая и ввести в соседнее поле число сканируемых записей. Если FoxPro должна провести поиск в остатке набора данных (от текущей записи до конца), следует активизировать селекторную кнопку Остаток. Кроме того, FoxPro позволяет найти запись только по ее номеру, без задания критерия отбора. Для перехода на нужную запись пользователь должен выбрать селекторную кнопку Запись и ввести в соседнее поле номер этой записи. Нажатие кнопки ОК завершает определение области, в которой должен проводиться поиск. С помощью следующей командной кнопки 
Рис. 5.4. Описание критериев поиска
В этом окне можно определить условие, которое используется FoxPro для отбора записей данных при поиске. В центре диалога расположено поле ввода Найти запись Слева внизу в Редакторе Выражений находятся списки Поля и Переменные. Из этих списков пользователь может выбирать поля и переменные для вставки в формулируемое выражение. Список полей содержит информацию из активной в данный момент базы. Если параллельно открыто несколько баз данных, то из поля списка Таблица следует выбрать требуемую базу данных и в списке полей будут индицированы содержащиеся в ней поля. Несмотря на то, что в каждый конкретный момент времени в списке полей перечислены поля только одной таблицы, при составлении выражения пользователь может обратиться к полям нескольких таблиц, выбирая при необходимости в списке Таблица другую базу данных. Имя поля из списка полей можно вставить в выражение двойным щелчком мыши на имени поля в списке. В области Функции в верхней части окна находятся четыре поля списков (по четырем типам данных): Строковые
Если выполнить щелчок мышью на элементе списка, он будет принят в поле ввода, причем именно в ту позицию, где в данный момент находится текстовый курсор.
Итак, при составлении критерия поиска, пользователь вначале выбирает нужную базу данных, из нее – поле, которое будет анализироваться при поиске. Далее выбирает из списка логических функций оператор сравнения, после которого набирает с клавиатуры значение поиска.
Используя командную кнопку Проверить, можно проверить синтаксис введенного выражения. Если ошибки в синтаксисе не найдены, пользователь получит в информационной строке в нижней части окна программы FoxPro следующее сообщение: Выражение ошибок не содержит. В противном случае откроется окно ошибок с сообщением: Синтаксическая ошибка. Если нажать кнопку ОК, выражение будет проверяться автоматически. Пользователь может покинуть Редактор Выражений при условии, что выражение не содержит ошибок. При закрытии Конструктора Выражений, пользователь возвращается к исходному диалоговому окну Найти. Щелчок на командной кнопке Найти, запускает процесс поиска данных. FoxPro останавливается на первой записи данных, удовлетворяющей критерию поиска, и устанавливает на неё курсор. С помощью директивы Записьñ
Продолжить (
Быстрый поиск
Перед тем, как начать поиск, пользователь должен открыть базу данных и проиндексировать ее по полю, в котором организуется поиск (см. Лабораторную работу 3). После того как индекс объявлен активным (рис. 5.5), базу данных нужно вывести на просмотр в табличном режиме.
Рис. 5.5. Диалоговое окно настройки базы данных
Для задания критерия отбора нужно вызвать команду Записьñ
Искать. Данная команда доступна только тогда, когда для базы установлен активный индекс. FoxPro снова откроет диалоговое окно Конструктор Выражений, но на этот раз с небольшими изменениями (рис. 5.6). Отличие этого окна от описанного ранее состоит в том, что поле для ввода критерия имеет другой заголовок, указывающий на то, что речь идет о
Значение для SEEK <expN> (индекс=kodfirm). Кроме того, представлено поле Далее в поле ввода необходимо ввести произвольный номер фирмы, например 103, и нажать командную кнопку ОК. FoxPro перейдет в базе данных к соответствующей записи.
Рис. 5.6. Редактор Выражений для быстрого поиска
Контекстный поиск
При организации контекстного поиска пользователь должен открыть базу данных, вывести ее на просмотр и выбрать команду Правкаñ Найти. Откроется диалоговое окно Найти, в котором нужно указать критерии поиска фрагмента текста (рис. 5.7).
В поле ввода Найти вводится фрагмент текста (можно часть слова), который необходимо найти.
В нижней части диалогового окна Найти расположены три контрольных индикаторов:
Рис. 5.7. Задание контекстного поиска
Фильтрация данных
Если во время работы пользователю необходимо ограничить число видимых записей данных, он может воспользоваться фильтром.
Для установки фильтра нужно открыть базу данных и вызвать команду Базаñ Настройка. FoxPro активизирует диалоговое окно Настройка базы (рис. 5.5), где располагается командная кнопка Фильтр.... При нажатии данной кнопки открывается Конструктор Выражений, где в поле ввода Выражение SET FILTER пользователь должен ввести логическое выражение (рис. 5.8)
Рис. 5.8. Определение фильтра После того, как введен в фильтр критерий отбора, нужно нажать командную кнопку ОК и закрыть диалоговое окно Настройка базы. Выведя базу данных на просмотр, пользователь увидит только записи данных, которые удовлетворяют заданному критерию отбора. Чтобы отменить фильтр необходимо вернуться через Настройку базы в фильтр и удалить в поле ввода Выражение Сохранить фильтры можно в файле окружения 
Фильтры и индексы Одновременно с упорядочением информации в базе данных при индексировании, можно управлять выводом записей. Для этого нужно фильтр установить внутри индекса. Открыв диалоговое окно Настройка базы пользователю необходимо выбрать активный индекс и с помощью командной кнопки Изменить, войти в структуру индекса. В диалоговом окне Индекс располагается командная кнопка Фильтр, с помощью которой открывается диалоговое окно Конструктор Выражений для задания критерия отбора.
Отчет по работе должен содержать:
Контрольные вопросы