以文本方式查看主题

-  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=152384)

--  作者:yacity
--  发布时间:2020/7/11 9:31:00
--  关于数据排序问题
关于数据排序问题,如图所示,


此主题相关图片如下:paixu.jpg
按此在新窗口浏览图片

排序代码

If txt.IndexOf(" ") = -1 Then \'如果没有空格

tbl.filter = "chanpinname Like " & txt & " or guige Like " & txt & " or JM Like " & txt & "  "

    tbl.Sort = "chanpinname desc,guige desc,danwei desc"

本来是想要按从小到大排序的。

实际情况产品名称相同的情况下,10CM排在了 2CM 3CM 的前面,这明显不是我想要的。


在不改变数据内容的情况下,如何按从小到大排序?



--  作者:y2287958
--  发布时间:2020/7/11 9:43:00
--  
添加辅助列
--  作者:有点蓝
--  发布时间:2020/7/11 9:43:00
--  
正常。字符串是按顺序从左到右进行排序的。10CM的从左第1位是1,比2CM的左第1位2小,所以排前面。

方法1、增加一个排序列,手工排序,然后按照这个排序列排序
2、增加一个双精度列,把规格里的数值提取放到双精度列里,然后按这个双精度列排序

--  作者:yacity
--  发布时间:2020/7/15 16:21:00
--  
那么如果新增paixu列,怎么样提取 guige(规格)列中的的内容,把其中的数字填充入排序列呢?
--  作者:有点蓝
--  发布时间:2020/7/15 16:36:00
--  
比如:

Dim pattern As String = "[^\\d+.]"
Dim txt = "2.5cm"
Dim str = System.Text.RegularExpressions.Regex.Replace(txt , pattern ,"")
Output.Show(str)