Foxtable(狐表)用户栏目专家坐堂 → [求助]自动编号问题


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

主题:[求助]自动编号问题

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/3 10:21:00 [显示全部帖子]

 你可以手动修改编号。

 

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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By: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


 回到顶部