« Назад
Команда
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
|