以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  学习中的疑惑GetUniqueValues(Filter, Col1, Col2, Col3....)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=23554)

--  作者:jiaodou
--  发布时间:2012/9/12 13:37:00
--  学习中的疑惑GetUniqueValues(Filter, Col1, Col2, Col3....)

语法:

GetUniqueValues(Filter, Col1, Col2, Col3....)

Filter: 条件表达式,请参考表达式的运算符和函数条件表达式
Col1: 指定列名称,可以指定多列。

如果只从一列中提取不重复值,那么返回的是一个字符串集合;如果从多列中提取不重复值,那么返回的是一个字符串数组集合,数组的长度等于指定的列数。

在执行以下示例之前,请打开CaseStudy目录下的示例文件"统计演示.Table"。

示例一

列出1999年6月1日后订购过PD01产品的客户名单:

Dim Customers As List(Of String)
Customers
= DataTables("订单").GetUniqueValues("[产品]= \'PD01\' And [日期] > #6/1/1999#", "客户")
For
i As Integer = 0 To Customers.Count - 1 \'其实用For Each好一点,这里只是顺便提供遍历集合的另一种用法。
Output.Show(Customers(i
))
Next

 

问:为何输出的结果是

CS01
CS02
CS03
CS04
CS05

而不是:

CS03

CS04

CS01

CS02

CS05

GetUniqueValues函数不是按照取到第一个不相同的字符按顺序保存在Customers字符列表里的吗?


--  作者:lin_hailun
--  发布时间:2012/9/12 14:06:00
--  
 这个问题不说还真不知道...默认排序了吧。
--  作者:jiaodou
--  发布时间:2012/9/12 14:14:00
--  
如果真是默认排序了,应该在帮助文档里加上函数说明吧,要不然这个函数应用在程序里时,哪里出错都不知道呀,也或许是我理解错了,还希望版主能帮忙解释一下
--  作者:jiaodou
--  发布时间:2012/9/12 14:27:00
--  
Dim Customers As List(Of String)
Customers = DataTables("订单").GetUniqueValues("[产品]= \'PD01\' And [日期] > #6/1/1999#", "客户")
For Each i As String In Customers  \'用For Each 结果是一样的,都是进行了排序
Output.Show(i)
Next