Foxtable(狐表)用户栏目专家坐堂 → [求助] 如何截取连续号码的起止号?


  共有6130人关注过本帖树形打印复制链接

主题:[求助] 如何截取连续号码的起止号?

帅哥哟,离线,有人找我吗?
狐狸爸爸
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/11/1 11:50:00 [显示全部帖子]

命令窗口执行:

 

DataTables("产品库存累总").DataRows.clear()
Dim nms As List(of String) = DataTables("产品库存清单").GetValues("产品名称")
For Each nm As String In nms
    Dim drs As List(of DataRow) = DataTables("产品库存清单").Select("产品名称 = '" & nm & "'","包号")
    Dim r As DataRow
    Dim idx As Integer
    For Each dr As DataRow In drs
        Dim rid As Integer = dr("包号").Substring(3,3)
        If  idx = 0 OrElse rid  > idx + 1
            r = DataTables("产品库存累总").addnew
            r("产品名称") = nm
            r("包号起") = dr("包号")
            r("包号止") = dr("包号")
            r("包数") = 1
        Else
            r("包号止") = dr("包号")
            r("包数") = r("包数") + 1
        End If
        idx = rid
    Next
Next


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/11/1 12:16:00 [显示全部帖子]

原来的代码有漏洞,要改一下

 

DataTables("产品库存累总").DataRows.clear()
Dim nms As List(of String) = DataTables("产品库存清单").GetValues("产品名称")
For Each nm As String In nms
    Dim drs As List(of DataRow) = DataTables("产品库存清单").Select("产品名称 = '" & nm & "'","包号")
    Dim r As DataRow
    Dim idx As Integer = 0
    For Each dr As DataRow In drs
        Dim rid As Integer = dr("包号").Substring(3,3)
        If  idx = 0 OrElse rid  > idx + 1
            r = DataTables("产品库存累总").addnew
            r("产品名称") = nm
            r("包号起") = dr("包号")
            r("包号止") = dr("包号")
            r("包数") = 1
        Else
            r("包号止") = dr("包号")
            r("包数") = r("包数") + 1
        End If
        idx = rid
    Next
Next


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/11/1 15:19:00 [显示全部帖子]

至少有三行代码是多余的,还可以简单点:

 

DataTables("产品库存累总").DataRows.clear()
Dim nms As List(of String) = DataTables("产品库存清单").GetValues("产品名称")
For Each nm As String In nms
    Dim drs As List(of DataRow) = DataTables("产品库存清单").Select("产品名称 = '" & nm & "'","包号")
    Dim r As DataRow
    Dim idx As Integer = 0
    For Each dr As DataRow In drs
        Dim rid As Integer = dr("包号").Substring(3,3)
        If  idx = 0 OrElse rid  > idx + 1
            r = DataTables("产品库存累总").addnew
            r("产品名称") = nm
            r("包号起") = dr("包号")
        End If
        r("包号止") = dr("包号")
        r("包数") = r("包数") + 1
        idx = rid
    Next
Next


还可以更高效点,不过没什么意思了,这样足够用了。


 回到顶部