Similar presentations:
Сортировка данных в таблице
1. Сортировка данных в таблице
2.
• Данные в таблице можно сортироватьдвумя способами – постоянная сортировка
и виртуальная сортировка.
3. Постоянная сортировка
• Для создания постоянной сортировкинужно перезаписать таблицу в желаемом
порядке.
• Недостаток такой сортировки – трудности в
поддержке отсортированной таблицы при
частом обновлении данных. Требуется
частое выполнение пересортировки.
4.
• Для создания постоянной сортировкииспользуется команда SORT.
• При выполнении этой команды создается
дополнительная копия таблицы,
отсортированная по заданному полю или
комбинации полей.
SORT TO <имя таблицы> ON <имя поля>
Имя новой
таблицы
Сортируемое поле
5.
• По умолчанию сортировка производится ввозрастающем порядке. Нельзя проводить
сортировку по полям типа Memo или
General.
• Можно задать имена еще нескольких полей,
чтобы дополнительно упорядочить новую
таблицу.
• При сортировке можно добавить
дополнительные параметры (см. справку).
• Пример
USE table1
SORT to new_tab on fio
6. Виртуальная сортировка
• Для виртуальной сортировки используютсяиндексы. Они позволяют упорядочить
таблицу наилучшим способом.
• Достоинство виртуальной сортировки –
индексы автоматически обновляются при
модификации данных. При этом не создается
копия таблицы как при постоянной
сортировке.
7.
• При подключении индекса автоматическипроисходит сортировка таблицы по
ключевому выражению.
• Если требуется сортировать таблицу по
различным полям для разных ситуаций,
достаточно создать разнообразные
индексы и подключать их в нужный
момент.
8.
• ПримерUSE table1
Set order to index2
Т.к. индекс построен по полю fio, то и
таблица будет отсортирована по полю fio
9.
Select table1Set order to index1 && по полю kod
10. Поиск данных в таблице
1. Команды LOCATE и CONTINUE –осуществляют поиск в таблице независимо от
того проиндексирована таблица или нет.
LOCATE [FOR <условие1>] [диапазон] [WHILE
<условие2>]
- Последовательно просматривает таблицу в
поисках первой записи, совпадающей с
заданным условием.
11.
• CONTINUE используют после того, какLOCATE успешно найдет запись, для
продолжения поиска.
• CONTINUE перемещает указатель записи к
следующей записи, для которой условие,
определенное в предшествующей LOCATE,
оценивается в истину (.T.) .
• CONTINUE может быть повторена, пока не
будет обнаружен конец файла или конец
области, определенной в LOCATE.
12.
2. Команда SEEK ищет запись,соответствующую условиям поиска, и делает
ее текущей.
• Данная команда осуществляет поиск записи
только в индексированной таблице по
ключевому выражению.
SEEK <выражение>
- Ищет в таблице первое появление записи,
индексный ключ которой соответствует
введенному выражению.
13.
• Команда SEEK требует, чтобы типзадаваемого выражения совпадал с типом
данных текущего индекса.
• Но само выражение поиска может не
всегда в точности совпадать с индексным
значением.
14.
• Функция FOUND() позволяет определить,найдена ли запись командами LOCATE,
CONTINUE или SEEK.
• Если функция FOUND() возвращает
значение True (.T.), то искомая запись
найдена, если значение False (.F.), то запись
не найдена.
15. Примеры
1. Select table1set order to && отключаем индексы
LOCATE FOR fio='Петров Сергей Иванович'
BROWSE
16.
Выведем на экран значение функцииFOUND():
? FOUND()
17.
2. Select table1set order to index2 && индекс по полю Fio
SEEK 'Иванов'
BROWSE
18.
Выведем на экран значение функцииFOUND():
? FOUND()
19.
SEEK 'Сидоров'BROWSE
В случае неудачного поиска указатель встает
на последнюю запись.
20.
Выведем на экран значение функцииFOUND():
? FOUND()
21.
• На работу команды SEEK влияет значениеустановки SET NEAR.
• SET NEAR ON - Устанавливает указатель
записи на запись самого близкого
соответствия в случае неудачного поиска.
Set near on
SEEK ‘Быков'
BROWSE
22.
• SET NEAR OFF (по умолчанию) Устанавливает указатель записи в конецтаблицы в случае неудачного поиска.
Set near OFF
SEEK ‘Быков'
BROWSE