以文本方式查看主题

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

--  作者:hofen2008
--  发布时间:2018/2/9 15:01:00
--  [求助]按日期顺序编号,相同日期编号相同
有一列日期数据,日期有重复,想实现自动编号,日期相同的行编号相同。请老师帮忙看看如何实现。
谢谢!

编号 日期
2017-001 2017-8-24
2017-002 2017-8-30
2017-003 2017-9-4
2017-003 2017-9-4
2017-003 2017-9-4
2017-004 2017-9-28
2017-004 2017-9-28
2017-004 2017-9-28
2017-004 2017-9-28
2017-005 2017-11-9
2017-005 2017-11-9
2017-005 2017-11-9
2017-005 2017-11-9
2017-005 2017-11-9
2017-005 2017-11-9
2017-005 2017-11-9

--  作者:有点甜
--  发布时间:2018/2/9 15:35:00
--  

参考

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=114407&skin=0

 


--  作者:hofen2008
--  发布时间:2018/2/9 16:24:00
--  
老师,我是想每一年按日期编号,一年的年号相同,后面的编号只要出现日期不同的就加1.
谢谢!

编号 日期
2016-001 2016-8-11
2016-001 2016-8-11
2016-002 2016-9-20
2016-003 2016-10-20
2016-004 2016-10-26
2016-005 2016-11-6
2016-006 2016-12-4
2016-006 2016-12-4
2016-006 2016-12-4
2016-006 2016-12-4
2017-001 2017-1-6
2017-001 2017-1-6
2017-001 2017-1-6
2017-001 2017-1-6
2017-001 2017-1-6
2017-001 2017-1-6
2017-002 2017-2-14
2017-003 2017-2-17
2017-003 2017-2-17
2017-003 2017-2-17
2017-003 2017-2-17
2017-004 2017-3-3
2017-005 2017-3-11
2017-006 2017-3-12
2017-006 2017-3-12
2017-006 2017-3-12
2017-006 2017-3-12
2017-006 2017-3-12

--  作者:有点甜
--  发布时间:2018/2/9 16:30:00
--  

For Each dr As DataRow In DataTables("采购明细").Select("")
    Dim d As Date = dr("到货时间")
    Dim bh As String = Format(d,"yyyy") & "-" \'生成编号的前缀
    Dim max As String
    Dim idx As Integer
    Dim flt As String
    flt = "到货时间 >= #" & d & "# And 到货时间 < #" & d.AddDays(1) & "# And [_Identify] <> " & dr("_Identify")
    max = dr.DataTable.Compute("Max(采购订单号)",flt)
    If max > "" Then \'如果存在最大单据编号
        idx = CInt(max.Substring(bh.length,3))
    Else
        d = new Date(d.year, 1, 1)
        flt = "到货时间 >= #" & d & "# And 到货时间 < #" & d.Addyears(1) & "# And [_Identify] <> " & dr("_Identify")
        max = dr.DataTable.Compute("Max(采购订单号)",flt)
        If max > "" Then
            idx = CInt(max.Substring(bh.length,3)) + 1 \'获得最大单据编号的后四位顺序号,并加1
        Else
            idx = 1 \'否则顺序号等于1
        End If
    End If
    dr("采购订单号") = bh & Format(idx,"000")
Next