Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сокращённые консультации к ГОС.doc
Скачиваний:
3
Добавлен:
21.09.2019
Размер:
377.34 Кб
Скачать

19. Поиск данных в неиндексированной таблице

В результате выпол­нения операции поиска нужной информации выделяется запись, удовлетворяющая требуемым условиям. При поиске данных не забывайте, что заглавная и строчная буква для компьютера – разные символы.

Для установки указателя на искомую запись используется команда

LOCATE [FOR <вржL>] [границы] [WHILE <вржL>]

Достоинством команды LOCATE является её способность находить искомое во всех полях таблицы, включая поля типа Memo и General. Эта команда просматривает активную таблицу от начала до конца, пока не найдет первую запись, для которой логическое выражение, следующее за FOR, оценивается как истинное. Например, требуется найти имя Tim в поле first_name таблицы Employee:

LOCATE FOR first_name='Tim'

Результат выполнения команды виден после щелчка по любой точке таблицы. Найденная запись, в которой содержится искомое, будет помечена маркёром.

Если в команде LOCATE используют опции [границы] и условие [WHILE <вржL>], поиск продолжается в указанных границах, пока логическое выражение в опции WHILE будет оставаться истинным.

Найти следующую запись, отвечающую условиям поиска, позволяет команда:

CONTINUE

Для поиска по частичному совпадению символов применяется оператор $. Например, для поиска в таблице Employee фамилий, оканчивающихся на «an», команда выглядит так:

LOCATE FOR 'an’ $ last_name

CONTINUE

Если запись, удовлетворяющая условию определенному логическим выражением, существует, то команда LOCATE устанавливает на нее указатель. О результате поиска можно судить по логическому значению, возвращаемому функцией

?FOUND()

При успешном поиске функция возвращает .Т. (True). При неудаче – .F. (False).

Если искомое не найдено, указатель перемещается в конец таблицы. Для проверки указателя используется функция EOF(), которая возвращает логическое значение .Т., или функция FOUND(), возвращающая значение .F.

Поиск данных в таблице визуальными средствами VFP

В Visual FoxPro имеется возможность находить содержимое любой ячейки таблицы через меню Edit → Find… (Можно использовать комбинацию клавиш CTRL+F). После выбора этих пунктов меню открывается окно поиска Find.

В поле Look for: следует ввести искомое и нажать кнопку Find Next. Найденая строка будет выделена маркёром.

Нужно иметь в виду следующее. Команда Find производит поиск, начиная с текущей записи, т.е. с той, на которой стоит указатель. Кроме того, имеет значение направление поиска. По умолчанию программа поиска выполнят поиск по строкам сверху вниз. Следовательно, если искомое не найдено, нужно выполнить поиск снизу вверх, предварительно поставив отметку в графу Search backward.

Чтобы облегчить поиск, можно выбрать соответствующие опции:

  • Match case – c учётом регистра;

  • Match whole word – искать целое слово;

  • Search backward – искать в обратном направлении;

  • Wrap around – полный поиск, т.е. просмотреть с начала и до конца.

Поиск в неупорядоченных таблицах, является медленным по сравнению с поиском в упорядо­ченных (индексированных) таблицах.

Поиск данных в индексированной таблице

Поиск по полю, для которого создан и открыт индекс, выполняется значительно быстрее, чем для неиндексированной таблицы. Команда:

USE <имя таблицы> INDEX<имя индекс файла.сdx>

SET ORDER TO TAG <имя тега>

открывает таблицу вместе с индексным файлом.

Поиск по предварительно индексированному полю Last_name, содержащем фамилии, выполняется командой

SEEK <врж> , где выражение может быть любого типа.

Например:

SEEK ‘Иванов’.

После щелчка по таблице указатель устанавливается на нужную запись. Если нужная запись не найдена, маркёр устанавливается на конец файла.

Команда SEEK может использоваться для поиска данных не только символьного типа. Например, если есть таблица, содержащая сведения о днях рождения сотрудников, можно выполнить команду

SEEK {^1962.10.12}

Для поиска данных только по значению символьного поля, используется команда

FIND <искомая строка|подстрока символов>

При предварительной установке SET EXACT ON (установить точное соответствие) поиск первой подходящей записи выполняется по всей искомой строке, а если используется установка SET EXACT OFF, то поиск может производиться по начальным символам строки. Чтобы уяснить действие этих установок, выполните следующее. Откройте таблицу Employee базы данных TestData и произведите индексацию по полю Last_name, выполнив команду:

INDEX ON Last_name TO L

По умолчанию, установлен режим SET EXACT OFF, т.е поиск можно вести по частичному совпадению символов.

Команда FIND устанавливает указатель на первую найденную запись. Если нужная запись не найдена, указатель устанавливается на конец файла. Особенно удобна эта команда для приблизительного поиска по упорядоченному числовому полю или полю типа дата. В результате выполнения этой команды, после предварительно выполненной команды SET NEAR ON, указатель устанавливается на ближайшей подходящей записи. Для выполнения команд SET EXACT и SET NEAR можно использовать вкладку Data окна Options.