對上一層:  模型程式語言參考手冊 > 項目串函數 >

ListAscItem( )

Print this Topic Previous pageReturn to chapter overviewNext page

函數先把項目字串中的項目以遞增排序,然後傳回某指定的項目,假如項目串裡包含了子項目串 (sub-item) ,你可以指定用以排序的子項目,函數可以傳回所整個項目項目中的子項目,亦可以傳回項目的在字串中的位置。

 

語法

ListAscItem(cValueExpr,nItemNumber,cSeparator,nSortSubItem,cSubItemSeparator,cReturnType)

ListAscItem(cValueExpr,nItemNumber,cSeparator,cSortExpr,cSubItemSeparator,cReturnType)

 

參數

註釋

cValueExpr

項目串(或傳回項目串的算式)

nItemNumber

指定傳回第幾個項目(依排序後的次序)

cSeparator

項目串的項目分隔字串(可多於一字元),預設為 ','

nSortSubItem

指定以第幾個子項目串排序(假如有子項目串的話),假如省略了,系統會用整個項目排序。

cSortExpr

以 ListCol( ) 及ListColVal( ) 組成的算式用以決定排序的值,ListCol( ) 用以指定子項目字串,ListColVal( ) 則把指定的子項目字串化成數字,請參閱下面的例子以了解 ListCol( ) 和 ListColVal( ) 的使用方法。假如cSortExpr參數省略了,系統會用整個項目排序。

cSubItemSeparator

子項目串中的項目分隔字串(可多於一字元),預設為 '-'

cReturnType

'I':項目在未排序前的次序

'R':傳回整個項目

省略或其他任何字: 傳回用以排序的子項目串

 

回傳值

Character

 

例子

ListAscItem('Orange,Apple,Grape,Pear',2)

傳回Grape。項目排序後變成了 'Apple,Grape,Orange,Pear',排序後排二位的項目是 'Grape'。

 

ListAscItem('12:45/6:00/9:40',3,'/',2,':','I')

傳回1。在項目串中第二子項目分別為 '45','00' 和 '40',依第二子項目排序以後項目串變成了 '6:00/9:40/12:45',排三位的項目是 '12:45',這是未排序前的第一項目,所以函式傳回1(cReturnType='I')。

 

ListAscItem('5-4,23-15,3-26',1,,2)

傳回 '15'。在項目串中第二子項目分別為 '4','15' 和 '26',請留意當比較字串時 '4' > '15' (因 '4' > '1',和數字的比較 4 < 15不同),所以排序後字串變為 '23-15,5-4,3-26' ,所以函式傳回 15。

 

ListAscItem('5-40,23-15,3-26',1,,2,,'R')

傳回 '23-15'。本例和上例機乎完全相同,不同的是函數傳回了整個項目(cReturnType='R')。

 

在下圖的檢視中「負重名次」欄利用HrHistoryList( ) 函數一次過提取了8程往績的負重和名次,「最輕」和「最佳」兩欄分別把負重和名次作遞增排序,然後提取排頭的數字,因為檢視只需搜尋往績一次,這比用 HrMinimum('HrWeight( )',8) 和 HrMinimum('HrFP( )',8) 搜尋往績兩次以取得同樣的資料速度更快。

 

欄名

算式

類別

馬匹

內置欄

 

負重名次

HrHistoryList("Str(HrWeight( ),3)+'-'+Str(HrFP( ),2)",8)

Text (56)

最輕

ListAscItem(Column('負重名次'),1,,1)

Text (3)

最佳

ListAscItem(Column('負重名次'),1,,2)

Text (2)

 

 

ListAscItem('5-4,6-1,2-6',1,,'ListColVal(1)+ListColVal(2)')

傳回 '6-1'。參數 'ListColVal(1)+ListColVal(2)' 表示用第1子項目的數值和第2 子項目的數值之和排序:

項目

ListColVal(1)+ListColVal(2)

'5-4'

5 + 4 = 9

'6-1'

6 + 1 = 7

'2-6'

2 + 6 = 8

 

由於 7<8<9,故此在排序之後項目串變成 '6-1,2-6,5-4',函數傳回排第一的位 '6-1'。

 

ListAscItem('5-4,6-12,2-6',1,,'ListCol(1)+ListCol(2)')

傳回 '6-1'。參數 'ListCol(1)+ListCol(2)' 表示用第1子項目的文字和第2 子項目的文字合併成的字串排序:

項目

ListCol(2)+ListCol(1)

'5-4'

'4' + '5' = '44'

'6-12'

'12' + '6' = '126'

'2-6'

'6' + '2' = '62'

 

由於 '126'<'44'<'62' (注意:由於 '1'<'4',所以 '126'<'44'),故此在排序之後項目串變成 '6-12,5-4,2-6',函數傳回排第一位的 '6-12'。

 

參閱

ListDescVal( ) | ListDescVal( ) | ListAscVal( ) | ListItem( ) | ListVal( ) | ListSum( ) | ListAverage( ) | ListFilter( )

 

 


Page url: http://www.racematenet.com/help/index.html?listascitem.htm