Foxtable(狐表)用户栏目专家坐堂 → 自动编号


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

主题:自动编号

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


加好友 发短信
等级:三尾狐 帖子:788 积分:6297 威望:0 精华:0 注册:2012/6/11 17:21:00
自动编号  发帖心情 Post By:2023/6/6 11:56:00 [只看该作者]

图片点击可在新窗口打开查看
新增行代码
Dim max As String
Dim idx As Integer
max = e.DataTable.Compute("Max(编号)","[_Identify] <> " & e.DataRow("_Identify")) '取得该月的最大编号
If max > "" Then '如果存在最大编号
    idx = CInt(max) + 1 '获得最大编号的后三位顺序号,并加1
Else
    idx = 1 '否则顺序号等于1
End If
e.DataRow("编号") = Format(idx, "000")
如果把004行删除
图片点击可在新窗口打开查看
再新增行要求编号为004
图片点击可在新窗口打开查看
请老师指教!谢谢
[此贴子已经被作者于2023/6/6 11:56:30编辑过]

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


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

断号重用,需要添加一个断号表,把被删除的编号记录下来,在生成编号的时候,先到这个表查询获取最早的编号,如果没有再按照上面的方法生成新的编号

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


加好友 发短信
等级:三尾狐 帖子:788 积分:6297 威望:0 精华:0 注册:2012/6/11 17:21:00
  发帖心情 Post By:2023/6/8 9:45:00 [只看该作者]

老师帮我看看错在哪
Dim Min As String
Dim max As String
Dim idx As Integer
Dim dr As DataRow
dr = DataTables("断号表").Find("[序号] = '" & e.DataRow("序号") & "'")
If Tables("断号表").Current IsNot Nothing And dr Is Nothing Then
    Min = DataTables("断号表").Compute(" Min(序号)")
    If Min > "" Then 
        e.DataRow("序号") = Min
    End If
Else
    max = e.DataTable.Compute("Max(序号)", "[_Identify] <> " & e.DataRow("_Identify")) 
    If max > "" Then 
        idx = CInt(max) + 1 
    Else
        idx = 1 
    End If
    e.DataRow("序号") = Format(idx, "000")
End If
[此贴子已经被作者于2023/6/8 9:47:09编辑过]

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


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

Dim Min As String
Dim max As String
Dim idx As Integer
If Tables("断号表").rows.count > 0 Then
    Min = DataTables("断号表").Compute("Min(序号)")
    e.DataRow("序号") = Min
DataTables("断号表").deletefor("[序号] = '" & Min & "'")
Else
    max = e.DataTable.Compute("Max(序号)", "[_Identify] <> " & e.DataRow("_Identify")) '取得该月的最大编号
    If max > "" Then '如果存在最大编号
        idx = CInt(max) + 1 '获得最大编号的后三位顺序号,并加1
    Else
        idx = 1 '否则顺序号等于1
    End If
    e.DataRow("序号") = Format(idx, "000")
End If

 回到顶部