SORT命令
对当前选定表进行排序,并将排过序的记录输出到新表中。
语法
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
存放排序后记录的新表名,Visual FoxPro 为表取 .DBF 文件扩展名。如果文件不包含扩展名,则自动为它指定 .DBF 扩展名。
ON FieldName1
在当前选定的、要排序的表中指定字段,字段的内容和数据类型决定了记录在新表中的顺序。默认情况是按升序排序,不能对备注或通用字段排序。
要进一步排序新表,可以包含附加字段名 (FieldName2,FieldName3)。第一个字段 FieldName1 是主排序字段,第二个字段 FieldName2
是第二级排序字段 … 依此类推。
下面示例按三个字段对表进行排序。先将 Customer 表打开并排序,同时创建了一个名为 temp 的新表,temp 中的记录按 cust_id 字段排序。
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && 打开 customer 表
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] [/C]
对于排序中包含的每个字段,可以指定排序顺序(升序或降序)。/A 为字段指定了升序。/D 指定了降序,/A 或 /D 可以作用于任何类型的字段。
默认情况下,字符型字段的排序顺序区分大小写。如果在字符型字段名后包含 /C,则忽略大小写。可以把 /C 选项同 /A 或 /D 选项组合起来,例如 /AC 或 /DC。
在下面的示例中,创建了一个名为 client 的新表,orders 表在 order_date 字段上按升序排序,在 freight 字段上按降序排序。
USE orders
SORT TO clients ON order_date/A,freight/D
ASCENDING
将所有不带 /D 的字段指定为升序排列。
DESCENDING
将所有不带 /A 的字段指定为降序排列。
如果省略 ASCENDING 或 DESCENDING 参数,则排序顺序默认为升序。
Scope
指定需要排序的记录范围。范围子句包括:ALL、NEXT nRecords、RECORD nRecordNumber 和 REST。有关范围子句的详细内容,请参阅 Scope 子句主题,或《开发指南》的第二章“语言概述”。
SORT 命令的默认范围是 ALL,即所有记录。
FOR lExpression1
在当前表中,指定排序中只包含逻辑条件 lExpression1 为“真”(.T.) 的记录。FOR 子句可以有条件地排序记录,筛掉不满足条件的记录。
如果 lExpression1 是可优化表达式,Rushmore 会优化这个 SORT ... FOR 命令。为达到最优性能,应在 FOR 字句中使用可优化表达式。有关 Rushmore 可优化表达式的内容,请参阅《开发指南》第十七章“优化应用程序”。
WHILE lExpression2
指定一个条件,在当前表中,只要逻辑表达式 lExpression2 的计算值为“真”,则依据此条件,排序中包含这个记录。
FIELDS FieldNameList
指定用 SORT 命令创建的新表中要包含的原表中的字段。如果省略 FIELDS 字句,新表中将包括原表中所有字段。
FIELDS LIKE Skeleton
在新表中包含那些与字段梗概 Skeleton 相匹配的原表字段,新表用 SORT 命令创建。
FIELDS EXCEPT Skeleton
在新表中包含那些不与字段梗概 Skeleton 相匹配的原表字段。
字段梗概 Skeleton 支持通配符。例如,如果想在新表中包含所有以 A 和 P 开头的字段,可以使用下面的命令:
SORT TO mytable ON myfield FIELDS LIKE A*,P*
可以将 LIKE 子句同 EXCEPT 子句组合使用:
SORT TO mytable ON myfield FIELDS LIKE A*,P* EXCEPT PARTNO*
NOOPTIMIZE
关闭 SORT 命令的 Rushmore 优化。有关详细内容,请参阅 SET OPTIMIZE 和深入了解 Rushmore 技术主题,或《开发指南》的第十七章“优化应用程序”。
说明
当前表中的一个或多个指定字段决定了记录在新表中出现的顺序。
重要内容
要确保有足够的磁盘空间保存新表,以及存储在排序过程中创建的临时工作文件,排序所需的磁盘空间可能是原表的三倍。可以用 DISKSPACE( ) 和 SYS(2020) 函数确定可用磁盘空间大小。如果在排序过程中,磁盘空间不足,Visual FoxPro 会显示错误信息,并删除临时工作文件。
包含数字和空格的字符型字段可能不会按照所希望的那样排序。这是因为数值型字段从右向左填充,空格位于左边;而字符型字段是从左向右填充,空格位于右边。
例如,表的两个记录包含字符型字段:一个是 1724,另一个是 18,而表按该字段以升序排序,则包含 1724 的记录会出现在包含 18 的记录的前面。这是因为 Visual FoxPro 从左向右读取字符型字段中的字符,由于 17(1724)比 18(18)小,则 1724 出现在前面。为避免这类问题,应在位数较小的数字前加零(0018),或者使用数值型字段。
温馨提示:内容为网友见解,仅供参考
vf中的sort on 命令
字段梗概 Skeleton 支持通配符。例如,如果想在新表中包含所有以 A 和 P 开头的字段,可以使用下面的命令:SORT TO mytable ON myfield FIELDS LIKE A*,P 可以将 LIKE 子句同 EXCEPT 子句组合使用:SORT TO mytable ON myfield FIELDS LIKE A*,P* EXCEPT PARTNO NOOPTIMIZE 关闭 SORT 命令的 R...
VF中 SORT NO是什么意思?
1、物理排序:SORT TO <新文件名> ON <字段名1> [\/A|\/D] [, <字段名2>[\/A|\/D] … ]。。。\/A 升序,\/D 降序 2、结构复合索引(逻辑排序):INDEX ON <表达式> TAG<标记名> [FOR<条件>] [ASCENDING | DESCENDING ] [UNIQUE ]ASCENDING:升序 DESCENDING 降序 3、单索引文件...
在VFP中,Sort on 姓名 \/D,年龄 to 0 是什么意思?
sort to 新表名 on 排序字段 \/a 升 或者\/d降 这样就会产生一个与原表一样的,按照排序字段排序的新表 另存到当前目录了
在VFP程序中sort on 总分\/D to zf 什么意思
对“当前表” 按“总分”以“降序”的方式排序后将排序的结果保存到 新表 zf 中
VF表格中排序命令试什么 啊!???
sort on 字段名 TO 排序表名 【ASCENDING|DESCENDING】
VF中sort的用法
use 表 sort to 新表名 on 排序字段 \/a 升 或者\/d降 这样就会产生一个与原表一样的,按照排序字段排序的新表 另存到当前目录了
VF如何排序并做标记(写入一个新表)?
VF排序并作标识的方法:SORT TO <表文件名> ON <字段名1 > [\/A\/\/D] [\/C] [,<字段名2 > [\/A\/\/D] [\/C]…] [ASCENDING \/ DESCENDING] [<范围>][FOR <条件>][WHILE<条件>] [NOOPTIMIZE] [FIELDS <字段名表>\/LIKE<通配符>\/ EXCEPT<通配> 命令说明:<表文件名>:存放...
vf中只对党员排序怎么写
排序有两种,一种是逻辑排序,一种是物理排序。物理排序要用到sort on <新文件名> on <字段名> [\/A](升序排列)[\/B](降序排列)(这是要重新建一个表把排序的结果储存下来)逻辑排序就是 index on <索引关键字> tag <索引标识名> [ascending](升序排列) [dscending](降序排列)(这个...
跪求整理好的VF指令
1.sort to nl on 年龄 按年龄升序排列,产生一个新表nl 2.sort to cj on 成绩\/d 按成绩降序排列,产生一个新表cj 六、索引 1.index on 姓名 tag xm \/\/按姓名升序建立普通索引,索引标识为xm\/\/ 2.index on 性别 tag xb \/\/按性别升序建立普通索引,索引标识为xb\/\/ 3.index on 成绩 tag cj descending...
vf6.0怎么排序啊
有两种方法可选择:1,搂字段 bmh 建立索引 2.用Sort命令建立排序后的新文件 SORT TO <排序后的新表> ON <排序字段> [\/A | \/D]\/A 升序 \/D 降序