以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]生成订单号  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=114407)

--  作者:l1q2lq
--  发布时间:2018/2/5 16:05:00
--  [求助]生成订单号
Dim b As New GroupTableBuilder("采购订单统计",DataTables("采购订单"))
b.Groups.AddDef("零件号") \'添加客户列用于分组
b.Groups.AddDef("供应商") \'添加客户列用于分组
b.Groups.AddDef("需求日期") \'添加客户列用于分组
b.Totals.AddDef("需求数量") \'添加数量列用于统计

首先导入需求,然后使用以上代码合并统计,点击一个按钮
希望针对不同的供应商和需求日期生成采购订单号:供应商相同且日期相同,订单号相同;供应商相同,日期不同,订单号不同;供应商不同,订单号不同;
格式为日期-000-1(当日累加)
需要怎么设置代码



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

 

For Each dr As DataRow In DataTables("采购订单统计").Select("")
    Dim d As Date = dr("需求日期")
    Dim bh As String = dr("供应商") & "-" & Format(d,"yyyyMMdd") & "-" \'生成编号的前缀
    Dim max As String
    Dim idx As Integer
    Dim flt As String
    flt = "供应商 = \'"& dr("供应商") & "\' And 需求日期 >= #" & d & "# And 需求日期 < #" & d.AddDays(1) & "# And [_Identify] <> " & dr("_Identify")
    max = dr.DataTable.Compute("Max(单据编号)",flt)
    If max > "" Then \'如果存在最大单据编号
        idx = CInt(max.Substring(bh.length,4)) + 1 \'获得最大单据编号的后四位顺序号,并加1
    Else
        idx = 1 \'否则顺序号等于1
    End If
    dr("单据编号") = bh & Format(idx,"0000")
Next


--  作者:l1q2lq
--  发布时间:2018/2/5 17:51:00
--  
b.Groups.AddDef("需求日期") 
老师,请教一下这个怎么定义为日期时间类型


--  作者:有点甜
--  发布时间:2018/2/5 17:58:00
--  

这样?

 

b.Groups.AddDef("需求日期",DateGroupEnum.None,"日期")


--  作者:l1q2lq
--  发布时间:2018/2/6 9:10:00
--  
谢谢老师,再麻烦帮忙看一下关于单号的
出现的结果是:日期相同且供应商相同的直接累加1,希望日期相同且供应商相同时单号是一致的

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

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

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


--  作者:l1q2lq
--  发布时间:2018/2/6 9:39:00
--  
谢谢老师