Сортировка данных в таблице
Постоянная сортировка
Виртуальная сортировка
Поиск данных в таблице
Примеры
369.00K
Category: informaticsinformatics

Сортировка данных в таблице

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 table1
Set 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 table1
set order to && отключаем индексы
LOCATE FOR fio='Петров Сергей Иванович'
BROWSE

16.

Выведем на экран значение функции
FOUND():
? FOUND()

17.

2. Select table1
set 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
English     Русский Rules