Распечатать страницу

Сортировка таблицы в Microsoft Visual FoxPro

« Назад

Команда

SORT TO TableName ON FieldName1 [/A | /D] [/C]
                   [, FieldName2 [/A | /D] [/C], ...] [ASCENDING | DESCENDING]
                   [Scope] [FOR lExpression1] [WHILE lExpression2]
                   [FIELDS FieldNameList| FIELDS LIKE Skeleton
                  
| FIELDS EXCEPT Skeleton] [NOOPTIMIZE]

сортирует записи текущей таблицы, размещая результат в новой таблице. Текущая таблица сохраняется неизмененной.

Опции и параметры:

TableName – имя таблицы, содержащей результат. Если расширение не задано, то по умолчанию берется DBF.

ON FieldName1 – имя поля, на котором основывается сортировка.

FieldName2, … – имена последующих поля, на которых основывается сортировка.

Прежде таблица сортируется по полю FieldName1, если имеются записи с одинаковыми значениями поля FieldName1, то они сортируются по полю FieldName2 и т. д.

[/A | /D] – порядок сортировки поля: A – возрастающий, D – убывающий.

[/C] – если опция включена и поле является для символьным, то регистр при сортировке игнорируется. По умолчанию сортировка чувствительна к регистру.

ASCENDING – (по умолчанию) задает возрастающий порядок сортировки для всех полей, не имеющих опции /D.

DESCENDING – задает убывающий порядок сортировки для всех полей, не имеющих опции /A.

Scope – диапазон сортируемых и попадающих в результат записей. Принимает значения ALL, NEXT nRecords, RECORD nRecordNumber и REST. По умолчанию действует значение ALL – сортируются все записи.

FOR lExpression1 – сортируются и попадают в результат только записи, для которых lExpression1 вычисляется со значением .T. Если выражение lExpression1 оптимизируемо, то применяется рашмор-оптимизия.

WHILE lExpression2 – записи сортируются, пока выражение lExpression2 вычисляется со значением .T.

FIELDS FieldNameList – список полей оригинальной таблицы, включаемых в результирующую таблицу. Разделяет имена полей запятая.

FIELDS LIKE Skeleton – в результирующую таблицу попадут поля, имена которых удовлетворяют маске Skeleton.

FIELDS EXCEPT Skeleton – в результирующую таблицу не попадут поля, имена которых удовлетворяют маске Skeleton.

Маска Skeleton может включать символы * и ?, например:

sort to SomeTable on SomeField fields like A*, P* except PartNo

NOOPTIMIZE – отключается рашмор-оптимизация.

При сортировке создается временный рабочий файл, а также новая таблица. Свободное пространство, необходимое для сортировки, оценивается, если сортируется вся таблица, как трехкратный размер оригинальной таблицы. Имеющееся свободное дисковое пространство определяется функциями DISKSPACE( ) или SYS(2020). Если при сортировке осуществлен выход за его пределы, то VFP генерирует ошибку. Временный файл удаляется, как при удачном, так и при неудачном завершении сортировки.

Временный файл размещается в директории, заданной опцией SORTWORK path файла конфигурации.

Замечание. Скорость сортировки таблицы, имеющей управляющий индекс и выполняемой с рашмор-оптимизацией, возрастет, если перед сортировкой употребить команду

SET ORDER TO

лишающую таблицу управляющего индекса.

Пример:

close databases

open database d:\HomeLibrary\HomeLibrary.dbc

use Authors

select Authors

&& Создаем отсортированный по полю Author файл d:\AuthorsSorted,

&& размещая в нем записи с AuthorId < 20

sort to d:\AuthorsSorted on Author for AuthorId < 20

use d:\AuthorsSorted in 0

select AuthorsSorted

&& Просмотр результата

browse last