以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  排序问题求解  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=157286)

--  作者:hitzfeld
--  发布时间:2020/10/10 22:39:00
--  排序问题求解
主表按输入顺序排序,但是我用下面的代码,把不重复的值抽取到一个新的临时表中的,时候,排序变了,很是困扰
Dim Vals As List(of String())
Vals = DataTables("采购单").GetValues("公司名称|产品名称")
For i As Integer = 0 To Vals.Count - 1
    Dim dr As DataRow = DataTables("批量录入").AddNew()
    dr("公司名称") = Vals(i)(0)
    dr("产品名称") = Vals(i)(1)
Next

原表 (按输入顺序)                                            
产品代码
-------------------------------------
C008
B005
F010

读到新的临时表,排列顺序变成按字母顺序
产品代码
--------------------------
B005
C008
F010
我希望能按原本的输入顺序排列,不要按首字母顺序重新排序。要怎么做?谢谢老师!






--  作者:有点蓝
--  发布时间:2020/10/11 20:26:00
--  
参考:http://www.foxtable.com/webhelp/topics/2747.htm

Vals = DataTables("采购单").GetValues("公司名称|产品名称","","_sortkey")

--  作者:hitzfeld
--  发布时间:2020/10/12 15:05:00
--  
蓝老师好,按您的方法修改后,排序问题倒是解决了,但是却把所有值都带进来了。比如下表
原表 (按输入顺序)                                            
产品代码
-------------------------------------
C008
B005
F010
A009
C008
B005
F010
A009
C008
B005
F010
A009
C008
B005
F010
A009
---------------------------------
其中,重复的是C008,B005,F010,A009四项,一共重复了4次,如果不使用,"_sortkey")取到的值是4个没错,但是用了,"_sortkey"则取到了16个值,这个和我的初衷就不一样了。
请您拨冗再指点下,谢谢!



--  作者:有点蓝
--  发布时间:2020/10/12 15:13:00
--  
不可能的。除非这些产品是不同的公司的
--  作者:hitzfeld
--  发布时间:2020/10/12 15:58:00
--  
蓝老师,我想把我的系统传给您看下,但是数据库压缩后仍然超过2048K,您看我要怎么传给您呢?或者您看能不能给我个QQ号,您远程看下,我操作给您看看?
--  作者:有点蓝
--  发布时间:2020/10/12 16:03:00
--  
新建一个项目,导入对应的表和窗口,重现同样的问题,然后把新项目文件发上来。不需要发整个项目
--  作者:hitzfeld
--  发布时间:2020/10/12 17:21:00
--  
蓝老师好,我重建项目之后才发现是我代码写错了!图片点击可在新窗口打开查看
正确的代码是GetValues("公司名称|产品名称","","_sortkey")把中间的两个双引号漏掉了,写成GetValues("公司名称|产品名称","_sortkey")。
现在检索出来的值是正确的了,但是,如果再附加条件还是报错,麻烦您看下
Vals = DataTables("采购单").GetValues("产品编码|产品名称","","_sortkey","[供应商名称]= \'"& tab &"\'")
不加后面的供应商名称能正确运行,加了就报错。

--  作者:有点蓝
--  发布时间:2020/10/12 17:35:00
--  

语法:

GetValues(ColumnName,Filter,Sort)

ColumnName:列名称,从此列中提取不重复的值。
Filter:     可选参数,指定一个条件表达式,只返回符合此条件的值;请参考表达式的运算符和函数 和 条件表达式
Sort:  


--  作者:hitzfeld
--  发布时间:2020/10/13 21:16:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:不重复取值问题.table

以下是引用有点蓝在2020/10/12 17:35:00的发言:

语法:

GetValues(ColumnName,Filter,Sort)

ColumnName:列名称,从此列中提取不重复的值。
Filter:     可选参数,指定一个条件表达式,只返回符合此条件的值;请参考表达式的运算符和函数 和 条件表达式
Sort:  


蓝老师好,又来麻烦您了,还是不能得到我要的排序效果,我把测试项目发到附件里,数据库是2005的,请您帮忙看下

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:data.rar


--  作者:有点蓝
--  发布时间:2020/10/13 21:53:00
--  
应该是这个不重复的值的理解有问题。【.GetValues("编码|名称|款型"】的情况下,这3个列的值都完全一样才算是重复。

您的意思是只需要编码,其它名称|款型如果有不一样的随便取一个?