Foxtable(狐表)用户栏目专家坐堂 → 排产号码的自动生成


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

主题:排产号码的自动生成

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


加好友 发短信
等级:八尾狐 帖子:1838 积分:13006 威望:0 精华:0 注册:2013/6/10 9:23:00
排产号码的自动生成  发帖心情 Post By:2020/9/14 11:23:00 [只看该作者]

有下面一段代码:

If e.DataCol.Name = "排产日期" Then
    If e.DataRow.IsNull("排产日期") Then
        e.DataRow("排产单号") = Nothing
    Else
        Dim d As Date = e.DataRow("排产日期")
        Dim bh As String = "P" & Format(d,"yy-MM") & "" '生成编号的前缀
        e.DataRow.Save
        Dim max As String
        Dim idx As Integer
        Dim flt As String
        flt = "排产单号 like '" & bh & "%' And [_Identify] <> " & e.DataRow("_Identify")
        max = e.DataTable.sqlCompute("Max(排产单号)",flt) '取得该月的相同排产单号的最大排产单号
        If max > "" Then '如果存在最大排产单号
            idx = CInt(max.Substring(bh.Length,2)) + 1 '获得最大排产单号的后两位顺序号,并加1
        Else
            idx = 1 '否则顺序号等于1
        End If
        e.DataRow("排产单号") = bh & Format(idx,"00")
        e.DataRow.Save
    End If
End If
代码编号规则如下:
比如日期是2020-08-XX,那么8月份的排产单号是P20-08-01,02,03...
比如日期是2020-09-XX,那么9月份的排产单号是P20-09-01,02,03...
现在有个问题, 就是排产日期一旦修改,那么排产单号就发生了变化?
比如排产单号是P20-0901, 一旦修改日期,排产单号就更改为P20-0902, 再修改一下日期,就更改为P20-0903
问题1,如何保证编号后面的顺序号一旦生成就不变化呢?
问题2,如果删除P20-0901, 再次添加,号码还是P20-0901, 而不是更改为P20-0902呢?





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


加好友 发短信
等级:超级版主 帖子:109463 积分:556971 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/14 11:30:00 [只看该作者]

所以理解帮助的代码就很重要了:http://www.foxtable.com/webhelp/topics/2403.htm

注意这一句代码,可以解决问题1:
If e.DataRow("编号").StartsWith(bh) = False '如果编号的前6位不符

至于问题2,既然都删除了P20-0901,再没有P20-0902、3的情况下,最新的肯定只能是P20-0901

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


加好友 发短信
等级:八尾狐 帖子:1838 积分:13006 威望:0 精华:0 注册:2013/6/10 9:23:00
  发帖心情 Post By:2020/9/14 11:43:00 [只看该作者]

第一个问题OK!谢谢!
第二个问题, 添加了P20-0901, P20-0902, P20-0903三个排产单号, 删除P20-0902, 再次添加一个排产单号,生成的是P20-0904, 如何让排产单号还是生成P20-0902呢?

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


加好友 发短信
等级:超级版主 帖子:109463 积分:556971 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/14 11:45:00 [只看该作者]

新建一个废号表,删除的号码放到废号表里,生成号码的时候先到废号表里查询取值,没有再使用上面的代码生成新的号码

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


加好友 发短信
等级:八尾狐 帖子:1838 积分:13006 威望:0 精华:0 注册:2013/6/10 9:23:00
  发帖心情 Post By:2020/9/14 11:48:00 [只看该作者]

谢谢! 另外在窗口的afterload里排序Tables("排产主表").Sort = "排产单号", 为何有时候不起作用呢?

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


加好友 发短信
等级:超级版主 帖子:109463 积分:556971 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/14 12:00:00 [只看该作者]

那就是有其它代码影响了

 回到顶部