以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]按时间分类自动编号(已解决)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=82987)

--  作者:yyzlxc
--  发布时间:2016/3/29 12:26:00
--  [求助]按时间分类自动编号(已解决)
分组统计的临时表,如何按插卡时间进行分类自动编号,(需要的效果:按插卡时间排序,地址码的 005 和 001 对换位置),请各位老师指教,谢谢!

Tables("统计表").Sort = "日期,班组ID,批次ID,工位ID,插卡时间"
Dim idx As Integer = 0
For Each dr As DataRow In DataTables("统计表").DataRows
    Dim max As String = Tables("统计表").Compute("max(地址码)", "日期 = \'" & dr("日期") & "\' and 班组ID = \'" & dr("班组ID") & "\' and 批次ID = \'" & dr("批次ID") & "\' and 工位ID = \'" & dr("工位ID") & "\'")
    If max > "" Then
        idx = Cint(max) + 1
    Else
        idx = 1
    End If
    dr("地址码") = Format(idx,"000")
    dr("加工费") = dr("单价") * dr("产量")
Next



图片点击可在新窗口打开查看此主题相关图片如下:捕获2.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2016/3/29 15:32:38编辑过]

--  作者:大红袍
--  发布时间:2016/3/29 14:58:00
--  

 
Tables("统计表").Sort = "日期,班组ID,批次ID,工位ID,插卡时间"
Dim idx As Integer = 0
For Each dr As Row In Tables("统计表").Rows
    Dim max As String = Tables("统计表").Compute("max(地址码)", "日期 = \'" & dr("日期") & "\' and 班组ID = \'" & dr("班组ID") & "\' and 批次ID = \'" & dr("批次ID") & "\' and 工位ID = \'" & dr("工位ID") & "\'")
    If max > "" Then
        idx = Cint(max) + 1
    Else
        idx = 1
    End If
    dr("地址码") = Format(idx,"000")
    dr("加工费") = dr("单价") * dr("产量")
Nex
t


--  作者:大红袍
--  发布时间:2016/3/29 15:03:00
--  

或者试试

 


Tables("统计表").Sort = "日期,班组ID,批次ID,工位ID,插卡时间"
Dim idx As Integer = 0
Dim pdr As Row = Nothing
For Each dr As Row In Tables("统计表").Rows
    If pdr Is Nothing OrElse pdr("工位ID") <> dr("工位ID") OrElse pdr("批次ID") <> dr("批次ID")  Then
        idx = 1
    Else
        idx += 1
    End If
    dr("地址码") = Format(idx,"000")
    dr("加工费") = dr("单价") * dr("产量")
    pdr = dr
Next


--  作者:yyzlxc
--  发布时间:2016/3/29 15:32:00
--  
谢谢大红袍老师的指教,问题解决,下面这段代码比上面的效率要提高三倍以上,再次感谢!!