vfp中有没有排序函数

如题所述

按升序或降序对数组中的元素排序。
ASORT(ArrayName [, nStartElement [, nNumberSorted [, nSortOrder [, nFlags]]])
返回值
数值型
参数
ArrayName
指定要排序的数组名称。
nStartElement
指定从第几个元素开始排序。如果忽略参数 nStartElement,则默认从数组的第一个元素开始排序。如果数组是一维的,函数从 nStartElement 开始排序。如果数组是二维的,则参数 nStartElement 既决定从第几行开始排序,又决定以每行中的第几列元素为Order By。
注意 引用二维数组中的一个元素有两种方法。第一种为使用两个下标值指定元素在数组中行和列位置,另一种方法为使用元素编号。此函数和其他处理二维数组的函数都需要使用元素编号(asort( ) 函数中为数值表达式 nStartElement
和 nNumberSorted)。使用 AELEMENT() 函数可以将数组的行、列下标值转换成元素的编号值。
下面的示例说明了起始元素 nStartElement 决定二维数组中的行如何排序。创建一个小的数组 gaArray 并且进行两次排序。第一次排序从数组的第一个元素开始,并且行依据数组的第一列数值进行排序。第二次排序从数组 gaArray
的第四个元素开始,行依据数组的第二列数值进行排序。
第一次排序从第一行开始,第二次排序从第二行开始。可以使用 DISPLAY MEMORY 命令显示数组内容,下面的示例表中显示了排序结果。
下面命令创建数组 gaArray:
DIMENSION gaArray(3,2)
gaArray(1) = 'G'
gaArray(2) = 'A'
gaArray(3) = 'C'
gaArray(4) = 'Z'
gaArray(5) = 'B'
gaArray(6) = 'N'
数组 gaArray 值如下:
第一列第二列
第一行GA
第二行CZ
第三行BN

用 ASORT( ) 函数从第一个元素 (1, 1) 开始对数组进行排序。排序时,通过调整行与行之间的位置使数组的第一列元素按升序放置。
=ASORT(gaArray,1)
新的行序为:
第一列第二列
第一行BN
第二行CZ
第三行GA

然后从第四个元素 (2, 2) 开始对数组进行排序。排序时,通过调整行与行之间的位置使数组第二列元素按顺序放置。
=ASORT(gaArray,4)
注意行序的不同:
第一列第二列
第一行BN
第二行GA
第三行CZ

nNumberSorted
指定一维数组中参与排序的元素个数,或二维数组中参与排序的行数。例如,如果数组是一维的,并且参数 nStartElement 为 2,这表明从数组的第二个元素开始排序。参数 nNumberSorted 为 3,表明有三个元素参与排序,即对第二、第三和第四个元素排序。如果参数为 -1 或忽略此参数,则从起始元素 nStartelement 到数组中的最后一个元素都参与排序。
如果数组是二维的,nNumberSorted 指定从起始元素 nStartElement 所在行开始参与排序的行数。例如,如若参数 nStarElement 为 2 且参数 nNumberSorted 为 3,将对包含第二个数组元素的行和接下来的两行排序。如果 nNumbersorted 为 -1 或忽略此参数,从包含起始元素的行到数组的最后一行都参与排序。
nSortOrder
指定数组元素的排序方向(升序或降序)。默认情况下,数组元素按升序排序;如果 nSortOrder 值为零或忽略此参数,数组中元素将按升序排序。如果 nSortOrder 值为 1 或任意非零值,数组元素按降序排序。
nFlags
指定应用于 sort 函数的大小写敏感搜索条件。可用的值是 0 (默认) 和 1。ASORT() 使用当前比较序列 (参见 SET COLLATE) 来确定排序次序。特定的比较序列 (如 "GENERAL") 是非大小写敏感的, 而且指定 nFlags = 0 将不会致使大小写敏感排序。
nFlags 参数仅在当前比较序列是大小写敏感 (如 "MACHINE"), 而你想执行一个非大小写敏感排序才是有用的。
在 nFlags 中指定的数值提供一个确定区分大小写排序的位值, 如下表所示:
nFlag位描述
0000大小写敏感排序
1001非大小写敏感排序

注意 如果指定了 nFlags, 可以传递其它参数值为 -1 来省略其它参数。
备注
所有参与排序的元素必须为同一数据类型。一维数组对元素排序,二维数组对行排序。对二维数组排序时,将改变数组行的顺序,使数组中某一列的元素按升序或降序排列。
如果排序成功,返回值为 1,否则返回值为 -1。
示例
下面的示例将表 customer 的 contact 字段内容复制到数组 gacontact 中。然后显示数组中前 20 条 字段的内容,对数组进行排序,重新按排序顺序显示 contact 字段的内容。
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer && 打开 customer 表

COUNT TO gnCount && 联系人数目
DIMENSION gaContact(gnCount,1) && 创建一个联系人数组
COPY TO ARRAY gaContact FIELD contact && 填充数组

CLEAR
? '联系人名字:'
?
FOR nCount = 1 TO 20
? gaContact(nCount) && 显示前 20 个联系人
ENDFOR
= ASORT(gaContact) && 排序数组

?
? '排序后的联系人名字:'
?
FOR nCount = 1 TO 20
? gaContact(nCount) && 显示排序后的前 20 个联系人
ENDFOR
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-19
有排序命令:SORT TO 排序文件名 ON 关键字段
详细功能见VFP帮助

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网