以文本方式查看主题

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

--  作者:netfox168
--  发布时间:2013/11/1 10:17:00
--  [求助] 如何截取连续号码的起止号?

有一库存清单,想根据号码累总成累总表,如附图:

 

意思是以产品为索引,在相同产品中每一个连续号码段生成一组,并取得头尾号码。

 


图片点击可在新窗口打开查看此主题相关图片如下:库存清单.jpg
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:库存累总.jpg
图片点击可在新窗口打开查看

 


--  作者:Bin
--  发布时间:2013/11/1 10:24:00
--  
DataTables("表名").Compute("max(包号)")
DataTables("表名").Compute("min(包号)")

--  作者:netfox168
--  发布时间:2013/11/1 10:35:00
--  
这个表达式不难,难的是要“每个连续号码段为一组”,中间断号的又得另起一组,而且是以产品为单位。
--  作者:Bin
--  发布时间:2013/11/1 10:36:00
--  
不是很明白你的意思,请上个例子,加以详细描述.
--  作者:netfox168
--  发布时间:2013/11/1 10:42:00
--  

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

这个就是上述附图的内容,“清单”是原始表,“累总”是目标表。想要的是如何从“清单”生成“累总”,不管是自动或者是按按钮都行。


--  作者:Bin
--  发布时间:2013/11/1 10:47:00
--  
请问能否说清楚你的需求呢,所谓的号码段是什么意思呢?  没办法看懂你的需求.
--  作者:Bin
--  发布时间:2013/11/1 10:50:00
--  
连续的号码为一段? 有多少段就添加多少天数据到累总表?
--  作者:netfox168
--  发布时间:2013/11/1 10:57:00
--  

比如在表中,CP1 就有2个号码段,001-003, 007-008 ,中间断了004-006 。CP2 就有3个号码段,012-014, 021-022, 036 ,中间断了好几个。

 

其实这个想法的目的是方便仓管员查询库存,清单里如果有成千上万包产品,看起来满眼水,累总表则看起来更有感觉一些。说到底,清单是给电脑看的,累总是给人看的。

 

当然,用 Excel 也可以做到累总,但我想包括在项目里,形成一个完整的体系。

[此贴子已经被作者于2013-11-1 11:05:02编辑过]

--  作者:lsy
--  发布时间:2013/11/1 11:36:00
--  
以前做过,和楼主的要求完全一样,当时费了不少功夫,例子找不着了。
--  作者:狐狸爸爸
--  发布时间: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