以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  文本式数字排序问题[已解決]  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=44954)

--  作者:realredred
--  发布时间:2014/1/12 16:45:00
--  文本式数字排序问题[已解決]
正常排序,都会按著数字的先后來排 , 但出來效果却不是順序
比如 1,2,3,4.........10,11

排出來的结果会是  1,10,11,2,3,4..........9

这个怎样解決?

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20140112164151.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2014-1-24 14:58:27编辑过]

--  作者:lsy
--  发布时间:2014/1/12 17:31:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:字符类型数字排序.table


--  作者:realredred
--  发布时间:2014/1/12 18:43:00
--  
0000-000,000-00,00-0
因会存在这种
ISY老師设的就会失效


--  作者:lsy
--  发布时间:2014/1/12 18:49:00
--  

看东西不够灵活啊。

 

不就这三个吗?

按你要的顺序,人为赋予三个值,不就行了。


--  作者:realredred
--  发布时间:2014/1/12 18:50:00
--  
是脑根不夠灵活
知道思路了
但臨时表
怎样定义代码呢?
[此贴子已经被作者于2014-1-12 18:50:10编辑过]

--  作者:lsy
--  发布时间:2014/1/12 18:54:00
--  
If e.DataCol.Name = "第一列" Then
    If e.DataRow("第一列") = "0000-000" Then
        e.DataRow("第二列") = 0.1
    ElseIf e.DataRow("第一列") = "000-00" Then
        e.DataRow("第二列") = 0.2
    ElseIf e.DataRow("第一列") = "00-0" Then
        e.DataRow("第二列") = 0.3
    Else
        e.DataRow("第二列") = Val(e.DataRow("第一列").Split("-")(0)) + Val(e.DataRow("第一列").Split("-")(1))
    End If
End If

--  作者:realredred
--  发布时间:2014/1/12 19:05:00
--  
这个知道了,
If e.DataCol.Name = "第一列" Then
    If e.DataRow("第一列") = Nothing Then
        e.DataRow("第二列") = Nothing
    Else
        If e.DataRow("第一列") = "00-0" Or e.DataRow("第一列") = "0-00" Then
            e.DataRow("第二列") = 0.9
        ElseIf e.DataRow("第一列") = "000-00" Or e.DataRow("第一列") = "00-000" Then
            e.DataRow("第二列") = 0.8
        ElseIf e.DataRow("第一列") = "0000-000" Or e.DataRow("第一列") = "000-0000" Then
            e.DataRow("第二列") = 0.7
        ElseIf e.DataRow("第一列") = "00000-0000" Or e.DataRow("第一列") = "0000-00000" Then
            e.DataRow("第二列") = 0.6
        Else
            e.DataRow("第二列") = Val(e.DataRow("第一列").Split("-")(0)) + Val(e.DataRow("第一列").Split("-")(1))
        End If
    End If
End If

是不知如何设 排序的变換代码BeforeSort

--  作者:lsy
--  发布时间:2014/1/12 19:08:00
--  
其他代码,不用动。
--  作者:realredred
--  发布时间:2014/1/12 22:47:00
--  
如果在第一列包含中文字或英文字或其他符号就 忽略 ,要怎判断?
用If Char.IsDigit(  ) 不行
[此贴子已经被作者于2014-1-12 22:50:55编辑过]

--  作者:有点甜
--  发布时间:2014/1/12 23:12:00
--  
 这个要用到正则表达式

Dim data As String = "001-002"
Dim reg As new System.Text.RegularExpressions.Regex("[0-9]+-[0-9]+")
msgbox(reg.Ismatch(data))