Foxtable(狐表)用户栏目专家坐堂 → [分享]存储过程版-网络环境下的复杂编号


  共有135100人关注过本帖树形打印复制链接

主题:[分享]存储过程版-网络环境下的复杂编号

帅哥哟,离线,有人找我吗?
lzgt
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:69 积分:789 威望:0 精华:0 注册:2017/7/1 18:52:00
  发帖心情 Post By:2023/1/29 17:48:00 [显示全部帖子]

偶见此贴。
关于自动编号在网络下的操作,有如下方法供大家分享下,也是初学编程,请指点。1, 一张单据编号信息表,(如须断号功能可自行加入断号序号字段,改写程序理论上可补优先补足断号)
图片点击可在新窗口打开查看
单据前缀(djqz)可自行设定;单据前缀索引(djqzsy)可自行设定规则&方式;单据流水位数(djlsws)可设定;单据预留位数(djylws)可设定,供手动插入有序列要求的情况;目前序号(mqxh)
2、全局代码
Public Function newnumber(bhmc As String) As String
On Error Resume Next

'生成数据表
Dim dt As DataTable = DataTables("tbljczldjbh")
dt.LoadFilter = "[bhmc] =N'" & bhmc & "'"
dt.Load

If dt.DataRows.Count = 1 Then
    Dim dtr As DataRow = dt.DataRows(0)
    Dim djqzsy() As String = dtr("djqzsy").Split(";") ' 将单据前缀式样拆分成数组
    Select Case djqzsy(0)
        Case "日期"
            If dtr("mqxl") < Format(Date.Today,djqzsy(1)) Then
                dtr("mqxl") = Format(Date.Today, djqzsy(1))
                dtr("mqxh") = 0
                dtr.Save
                dtr.Load
                MessageBox.show("日期区段进入新的区间,流水号将复位")
            Else
                If dtr("mqxl") > Format(Date.Today,djqzsy(1)) Then
                    MessageBox.show("日期区段退回过去区间,将引起严重的系统错误!","警告", MessageBoxButtons.ok, MessageBoxIcon.Error)
                    newnumber = dtr("djqz") & Format(Date.Today,djqzsy(1)) & "err"
                    Return newnumber
                End If
            End If
            
            If dtr("djylws") = 0 Then
                newnumber = dtr("djqz") & Format(Date.Today,djqzsy(1)) & Right("00000000" & dtr("mqxh") + 1, dtr("djlsws"))
            Else
                newnumber = dtr("djqz") & Format(Date.Today,djqzsy(1)) & Right("00000000" & dtr("mqxh") + 1, dtr("djlsws")) & Right("000000",dtr("djylws"))
            End If
            
        Case "无"
            If dtr("djylws") = 0 Then
                newnumber = dtr("djqz") & Right("00000000" & dtr("mqxh") + 1, dtr("djlsws"))
            Else
                newnumber = dtr("djqz") & Right("00000000" & dtr("mqxh") + 1, dtr("djlsws")) & Right("000000", dtr("djylws"))
            End If
    End Select
    
    dtr("mqxh") = dtr("mqxh") + 1
    dtr.Save
    
Else
    MessageBox.show("系统信息出错/提取代码有误","警告")
End If
End Function
3,生成新记录时,引用newnumber(bhmc As String)  过程,自动生成新单号

 回到顶部