Команда SORT
См. также
Синтаксис
SORT TO TableName ON FieldName1 [/A | /D] [/C]
Параметры
TableName
Задает имя новой таблицы, предназначенной для отсортированных записей. Visual
FoxPro предполагает, что файлы таблиц имеют расширение имени .DBF. Расширение
.DBF присваивается автоматически, если вы задали имя файла без расширения.
ON FieldName1
Задает поле в выбранной в данный момент таблице, на базе которого будет п
оизводиться сортировка. Содержимое и тип этого поля будут определять порядок
записей в новой таблице. По умолчанию сортировка производится в возрастающем порядке.
Нельзя проводить сортировку по полям типа Memo или General.
Можно задать имена еще нескольких полей (FieldName2, FieldName3), чтобы дополнительно упорядочить новую таблицу. Первое поле FieldName1 является полем первичной сортировки, второе поле FieldName2 полем вторичной сортировки и т.д.
Ниже приведен пример, в котором таблица сортируется по трем полям. Сначала таб
ица
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Opens Customer table
CLEAR
LIST FIELDS company, cust_id NEXT 3
SORT TO temp ON cust_id
USE temp
LIST FIELDS company, cust_id NEXT 3
WAIT WINDOW 'Now sorted on CUST_ID' NOWAIT
Для каждого поля, участвующего в сортировке, можно указать возрастающий или уб
вающий порядок сортировки. /A задает возрастающий порядок для данного поля, /D убывающий порядок. Опцию /A или /D можно задать для поля любого типа.
По умолчанию порядок сортировки по символьному полю определяется с учетом
егистра символов. Если после имени символьного поля задать опцию /C, регистр будет
игнорироваться. Опцию /C можно указывать в сочетании с опцией /A или /D: нап
имер /AC или /DC.
В следующем примере создается новая таблица
SORT TO clients ON order_date/A,freight/D
Задает возрастающий порядок для всех полей, для которых не указана опция /D.
DESCENDING
Задает убывающий порядок для всех полей, для которых не указана опция /A.
Если опустить ASCENDING и DESCENDING, порядок сортировки по умолчанию будет
возрастающим.
Scope
Задает диапазон сортируемых записей. Диапазон задается следующими предложе
иями: ALL, NEXT nRecords, RECORD nRecordNumber и REST. Подробнее о предложениях диапазона см. тему Предложения диапазона или главу 2 "Обзор языка программирования" Руководства разработчика.
По умолчанию областью действия команды SORT являются все записи (предложение
ALL).
FOR lExpression1
Задает сортировку только тех записей текущей таблицы, для которых логическое
условие lExpression1 имеет значение "истина" (.T.). Предложение FOR позволяет выполнять условную
сортировку, отсеивая ненужные записи.
Технология Рашмора оптимизирует команду SORT ... FOR, если lExpression1 является оптимизируемым выражением. В целях получения наивысшей производитель
ости пользуйтесь в предложении FOR оптимизируемым выражением. О выражениях,
опускающих оптимизацию по технологии Рашмора, см. главу 17 "Оптимизация приложе
ий" Руководства разработчика.
WHILE lExpression2
Задает условие, в соответствии с которым записи из текущей таблицы включаются
в процесс сортировки, пока логическое выражение lExpression2 остается истинным (.T.).
FIELDS FieldNameList
Задает поля исходной таблицы, которые следует включить в новую таблицу, соз
аваемую командой SORT. Если опустить предложение FIELDS, в новую таблицу вк
ючаются все поля исходной таблицы.
FIELDS LIKE Skeleton
Указывает, что в новую таблицу, создаваемую командой SORT, следует включить те
поля исходной таблицы, которые соответствуют шаблону имен Skeleton.
FIELDS EXCEPT Skeleton
Указывает, что в новую таблицу, создаваемую командой SORT, следует включить
все поля исходной таблицы, кроме тех, которые соответствуют шаблону имен Skeleton.
В шаблоне имен полей Skeleton можно использовать символы подстановки. Например, чтобы задать включение в
овую таблицу всех полей, имена которых начинаются на буквы A и P, воспользуйтесь
следующей командой:
Блокирует оптимизацию операции SORT по технологии Рашмора. Подробнее см. темы SET OPTIMIZE и Основы технологии Rushmore или главу 17 "Оптимизация приложений" Руководства разработчика.
Комментарии
Порядок записей, вставляемых в новую таблицу, определяется одним или неско
ькими заданными полями текущей таблицы.
Важное замечание Убедитесь, что у вас достаточно места на диске, чтобы разместить новую таб
ицу и временные рабочие файлы, создаваемые в процессе сортировки. Для выполнения
сортировки может потребоваться пространство на диске, втрое превышающее размер
исходной таблицы. Объем свободного места на диске можно определить с помощью
функций DISKSPACE( ) и SYS(2020). Если вам не хватило места на диске в процессе
сортировки, Visual FoxPro отобразит предупреждение об ошибке и временные ра
очие файлы будут удалены.
Поля символьного типа, содержащие цифры и пробелы, могут оказаться отсортирова
ными не в том порядке, на какой вы рассчитываете. Числовые поля заполняются сп
ава налево, и пустые позиции остаются слева. Символьные поля, напротив, запол
яются слева направо, и пустые позиции остаются справа.
Например, если две записи в таблице включают символьное поле, которое в одной
записи содержит число 1724, а в другой 18, и таблица сортируется по этому полю
в возрастающем порядке, то запись с числом 1724 окажется перед записью с числом
18. Это объясняется тем, что Visual FoxPro считывает символы в поле символь
ого типа слева направо, и поскольку 17 (от числа 1724) меньше, чем 18, первым бу
ет поставлено число 1724. Чтобы избежать подобных проблем, ставьте перед ме
ьшими числами начальные нули (0018) или делайте такие поля числовыми.
[, FieldName2 [/A | /D] [/C] ...]
[ASCENDING | DESCENDING]
[Scope] [FOR lExpression1] [WHILE lExpression2]
[FIELDS FieldNameList
| FIELDS LIKE Skeleton
| FIELDS EXCEPT Skeleton]
[NOOPTIMIZE]
Новое на сайте
-
Обновлен портфель программиста
Добавлены: Установка HTML Help (Создание справочной системы), Imagedit.zip - Графический редактор ( ico и bmp), Библиотека локализации HTML Help (Русский) -
Новые примеры программ
Установка библиотек, Игровая программа "Охота на лис", Установка библиотек "Охота на лис", plastic -"Платежки", Библиотеки (на FPD26), platan -"Платежки" (на Clipper 5.2) -
Обновленна справка
Подсказки, технология программирования и использование Visual FoxPro. Команды, функции, операторы, объекты, свойства, события и методы.