以文本方式查看主题

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

--  作者:实话实说
--  发布时间:2016/10/15 10:43:00
--  排序问题

以下是电线电缆的规格列,左边是录入内容,希望得到右边的排序效果,能否给出代码?


图片点击可在新窗口打开查看此主题相关图片如下:规格排序.jpg
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2016/10/15 10:53:00
--  
直接排序就可以,

Tables("订单").Sort = "录入规格"

--  作者:实话实说
--  发布时间:2016/10/15 11:25:00
--  
Tables("订单").Sort = "录入规格"
只能根据主芯和规格排序,忽略了地芯和规格的排序
纠正1楼:3*25+1*10应在3*25+1*16前面
[此贴子已经被作者于2016/10/15 11:26:12编辑过]

--  作者:实话实说
--  发布时间:2016/10/15 11:37:00
--  
上实例
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


--  作者:有点蓝
--  发布时间:2016/10/15 11:39:00
--  
测试没有问题,除非你的数据有空格或者全角符号

上传例子说明

--  作者:实话实说
--  发布时间:2016/10/15 13:07:00
--  
排序规则:1、按主芯芯数和规格排序,2、先按主芯芯数和规格排序,再按地芯芯数和规格排序。排序后效果在1楼
[此贴子已经被作者于2016/10/15 13:07:21编辑过]

--  作者:有点蓝
--  发布时间:2016/10/15 14:29:00
--  
增加一个辅助列

Dim v As String

For Each r As Row In Tables("表A").Rows
    If r.IsNull("排序前") = False
        v = r("排序前")
        Dim xh As String = v.Split("*")(0)
        If v.Contains("+") Then xh &= "+"
        r("Idx") = xh
    End If
Next

Tables("表A").Sort = "Idx,排序前"

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1(5).foxdb



--  作者:实话实说
--  发布时间:2016/10/15 14:50:00
--  
增加了3*120+1*70,3*120+2*70,4*120+1*70后排序排到3*25+1*16前面了,不符合要求。应该:
3*25+1*10
3*25+1*16
3*35+1*16
3*120+1*70
3*25+2*16
3*35+2*16
3*120+2*70
末增加前排序符合要求

图片点击可在新窗口打开查看此主题相关图片如下:snap1.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2016/10/15 14:53:46编辑过]

--  作者:有点蓝
--  发布时间:2016/10/15 15:07:00
--  
没有办法排这种序。你把内容分成几列存储,并改为整型列。
--  作者:清风徐来
--  发布时间:2016/10/15 15:24:00
--  
统一一下格式能不能解决?
如:
3*120+1*70
格式化为
003*120+001*070