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


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

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

帅哥哟,离线,有人找我吗?
Bin
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/11/1 11:50:00 [只看该作者]

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


上万行的数据执行起来效率不会很高,但是有效.

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


加好友 发短信
等级:童狐 帖子:274 积分:2960 威望:0 精华:0 注册:2011/9/19 0:18:00
  发帖心情 Post By:2013/11/1 12:00:00 [只看该作者]

狐狸爸爸万岁!万岁!万万岁!

 

学习了!


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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望: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


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


加好友 发短信
等级:童狐 帖子:274 积分:2960 威望:0 精华:0 注册:2011/9/19 0:18:00
  发帖心情 Post By:2013/11/1 15:01:00 [只看该作者]

神了!

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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望: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


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


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


加好友 发短信
等级:六尾狐 帖子:1198 积分:7859 威望:0 精华:0 注册:2013/5/17 14:26:00
  发帖心情 Post By:2013/11/1 16:03:00 [只看该作者]

用户已经被屏蔽

 回到顶部
总数 16 上一页 1 2