以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]自动编号问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=100019)

--  作者:juswety
--  发布时间:2017/5/3 9:50:00
--  [求助]自动编号问题
老师您好,请问下,我做的单据按照帮助里面的自动编号生成单据的编号,这个编号可以手动进行修改吗?也就是自动编号与手动编号并存。
--  作者:有点色
--  发布时间:2017/5/3 10:21:00
--  

 你可以手动修改编号。

 

 如果你手动的和自动的不同,请标识出来,比如用特殊字符标记为手动。要改代码。

 

 如果你手动和自动都是一样,只是编号不同,那就直接修改,代码不需要改。


--  作者:juswety
--  发布时间:2017/5/3 10:27:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.zip


自动编号和手动编号就是差别有点大,要怎么改呢,还有,我在BOM表身那里的子件编号设置了下拉框,为什么也不显示了呢,在关联表中又有的?

--  作者:有点色
--  发布时间:2017/5/3 10:36:00
--  

比如,你要手动编号,就在前面加入字母 sd_ 如 sd_201705-005

 

代码修改成

 

If e.DataCol.name = "制单日期" Then
    If e.DataRow.Isnull("制单日期") Then
        e.DataRow("单据编号") = Nothing
    Else
        Dim d As Date = e.DataRow("制单日期")
        Dim y As Integer = d.year
        Dim m As Integer = d.month
        Dim days As Integer = Date.DaysInMonth(y,m)
        Dim fd As Date = new Date(y,m,1) \'获取该月的第一天
        Dim ld As Date = new Date(y,m,days) \'获取该月的最后一天
        Dim bh As String = Format(d,"yyyyMM") \'生成编号的前6位,4位年,2位月
        If e.DataRow("单据编号").startswith(bh) = False \'如果编号的前6位不符
            Dim max As String
            Dim idx As Integer
            max = e.DataTable.Compute("max(单据编号)","单据编号 not like \'sd_%\' and 制单日期 >= #" & fd & "# and 制单日期 <= #" & ld & "# and [_identify] <> " & e.DataRow("_identify")) \'取得该月的最大编号
            If max > "" Then \'如果存在最大编号
                idx = CInt(max.SubString(7,3)) + 1 \'获取最大编号的后三位顺序号,并加1
            Else
                idx = 1 \'否则顺序号等于1
            End If
            e.DataRow("单据编号") = bh & "-" & Format(idx,"000")
        End If
    End If
End If


--  作者:juswety
--  发布时间:2017/5/3 10:41:00
--  
好的,谢谢,我再看看