以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]如何实现按单位显示记录条件下的自动编号  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=159968)

--  作者:lojel
--  发布时间:2021/1/15 18:05:00
--  [求助]如何实现按单位显示记录条件下的自动编号
设计了公文表,按登录用户的单位进行了数据筛选,只能查看本单位数据。在公文新增中用以下代码实现了按收件时间的自动编号。现在各下属单位每一天都是从001开始,单独看没问题。但管理员这里将所有单位数据都显示后就发现了重复的001等编号,请问如何修改代码使各下属单位自动编号时按数据表里所有数据进行自动编号?
这是自动编号的代码:
If e.DataCol.Name = "收件时间" Then
    If e.DataRow.IsNull("收件时间") Then
        e.DataRow("编号") = Nothing
    Else
        Dim bh As String = Format(e.DataRow("收件时间"),"yyyyMMdd") \'取得编号的8位前缀
        If e.DataRow("编号").StartsWith(bh) = False \'如果编号的前8位不符
            Dim max As String
            Dim idx As Integer
            max = e.DataTable.Compute("Max(编号)","收件时间 = #" & e.DataRow("收件时间") & "# And [_Identify] <> " & e.DataRow("_Identify")) \'取得该天的最大编号
            If max > "" Then \'如果存在最大编号
                idx = CInt(max.Substring(9,3)) + 1 \'获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 \'否则顺序号等于1
            End If
            e.DataRow("编号") = bh & "-" & Format(idx,"000")
        End If
    End If
End If


这是刷新代码进行数据桉单位显示:
If _UserGroup = "基层管理" Then
    Dim dr As DataRow = DataTables("用户信息表").find("用户名 = \'"  & _UserName & "\'")
    If dr IsNot Nothing Then
        DataTables("公文督办表").LoadFilter = "承办单位 = \'" & dr("二级单位") & "\'"
        DataTables("公文督办表").Load
    End If
Else
    DataTables("公文督办表").LoadFilter = ""
    DataTables("公文督办表").Load
End If

这是两个单位自动编号后重复的001
图片点击可在新窗口打开查看

[此贴子已经被作者于2021/1/15 18:08:44编辑过]

--  作者:lojel
--  发布时间:2021/1/15 21:11:00
--  
看了一下,打算用帮助文件说的方案来解决http://www.foxtable.com/webhelp/index.htm?page=1994.htm

-------------已解决!


[此贴子已经被作者于2021/1/15 21:43:16编辑过]