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


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

主题:自动编号代码改写

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


加好友 发短信
等级:小狐 帖子:388 积分:3212 威望:0 精华:0 注册:2017/4/2 19:33:00
自动编号代码改写  发帖心情 Post By:2020/9/8 15:20:00 [只看该作者]

请老师帮忙改写一下以下代码:以下代码生成的格式为202009-0001,如果需要:组织机构代码(9位)+年份(4位)+流水码(4位),以下代码应该如何改写,请老师指点:

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(编号)","填表日期 >= #" & fd & "# And 填表日期 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该月的最大编号
            If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(7,4)) + 1 '获得最大编号的后四位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("编号") = bh & "-" & Format(idx,"0000")
        End If
    End If
End If



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


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

组织机构代码是一个列?还是一个固定的值?

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


加好友 发短信
等级:小狐 帖子:388 积分:3212 威望:0 精华:0 注册:2017/4/2 19:33:00
  发帖心情 Post By:2020/9/8 15:31:00 [只看该作者]

固定的
[此贴子已经被作者于2020/9/8 15:31:18编辑过]

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


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

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 fd As Date = New Date(y,1,1)
        Dim bh As String = "xx组织机构代码" & Format(d,"yyyy") '生成编号的前6位,4位年,2位月.
        If e.DataRow("编号").StartsWith(bh) = False '如果编号的前6位不符
            Dim max As String
            Dim idx As Integer
            max = e.DataTable.Compute("Max(编号)","填表日期 >= #" & fd & "# And 填表日期 < #" & fd.addyears(1) & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该月的最大编号
            If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(max.length - 4)) + 1 '获得最大编号的后四位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("编号") = bh & "-" & Format(idx,"0000")
        End If
    End If
End If

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


加好友 发短信
等级:小狐 帖子:388 积分:3212 威望:0 精华:0 注册:2017/4/2 19:33:00
  发帖心情 Post By:2020/9/8 15:46:00 [只看该作者]

老师,如果组织机构代码是固定列呢?

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


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

参考:http://www.foxtable.com/webhelp/topics/2403.htm,看四、按日期和类别编号

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


加好友 发短信
等级:小狐 帖子:388 积分:3212 威望:0 精华:0 注册:2017/4/2 19:33:00
  发帖心情 Post By:2020/9/8 17:38:00 [只看该作者]

谢谢老师:就是其中这段代码的意思不太理解:
max = e.DataTable.Compute("Max(编号)","填表日期 >= #" & fd & "# And 填表日期 < #" & fd.addyears(1) & "# And [_Identify] <> " & e.DataRow("_Identify"))

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


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

不是按年编号的吗,【"填表日期 >= #" & fd & "# And 填表日期 < #" & fd.addyears(1) & "#】就是指在这一年的范围之内,比如是今年,条件就是【"填表日期 >= #2020-1-1# And 填表日期 < #2021-1-1#

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


加好友 发短信
等级:小狐 帖子:388 积分:3212 威望:0 精华:0 注册:2017/4/2 19:33:00
  发帖心情 Post By:2020/9/8 21:12:00 [只看该作者]

这一段怎么理解?为什么必须加上这一段:And [_Identify] <> " & e.DataRow("_Identify")
[此贴子已经被作者于2020/9/8 21:12:33编辑过]

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


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

取最大值的时候排除当前行的值

 回到顶部