以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  自动编号  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=186884)

--  作者:良才
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间:2023/6/6 12:08:00
--  
断号重用,需要添加一个断号表,把被删除的编号记录下来,在生成编号的时候,先到这个表查询获取最早的编号,如果没有再按照上面的方法生成新的编号
--  作者:良才
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间: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