Foxtable(狐表)用户栏目专家坐堂 → 求按类别分月自动编号


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

主题:求按类别分月自动编号

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


加好友 发短信
等级:二尾狐 帖子:535 积分:3891 威望:0 精华:0 注册:2018/1/3 16:03:00
求按类别分月自动编号  发帖心情 Post By:2022/6/16 16:47:00 [只看该作者]

老师您好!帮助中《自动编号生成方法》按类别编号的代码

Select e.DataCol.Name
    Case
"
类别"
       
If e.DataRow.IsNull("类别") Then
            e.DataRow("
编号") = Nothing
        Else
            Dim
lb As String = e.DataRow("
类别")
            If
e.DataRow("
编号").StartsWith(lb) = False '如果单据编号前缀不符
               
Dim max As String
               
Dim idx As Integer
                max = e.DataTable.Compute("Max(
编号)","类别 = '" & lb & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该类别的最大编号
               
If max > "" Then '如果存在最大编号
                    idx = CInt(max.Substring(2,3)) + 1 '
获得最大编号的后三位顺序号,并加1
               
Else
                    idx = 1 '
否则顺序号等于1
               
End If
                e.DataRow("
编号") = lb & Format(idx,"000")
            End
If
        End
If
End
Select

我想按类别分月自动编号,代码不知怎么改一下,也翻阅了论坛中有关自动编号的帖子,我没能找到。我的需求是:

表中设有“类别”、“ 日期”、“ 编号”三列。编号为“类别”+3位顺序号,如“DM001”。只是分月单独编号,如6月份第一、第二个编号分别为“DM001”、“DM002”,到7月份的第一、第二个编号仍分别为“DM001”、“DM002”,其他以此类推。也就是一个月份一重新编号,当月编号无重复,全年有重复,编号中无日期,但与日期又相关。


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


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

加上月份做条件即可:http://www.foxtable.com/webhelp/topics/2403.htm

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


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

            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 lb As String = e.DataRow("类别")
            If
 e.DataRow("
编号").StartsWith(lb) = False '如果单据编号前缀不符
                
Dim max As String
                
Dim idx As Integer
                max = e.DataTable.Compute("Max(
编号)","类别 = '" & lb & "'  And 日期 >= #" & fd & "# And 日期 <= #" & ld & "#  And [_Identify] <> " & e.DataRow("_Identify")) '取得该类别的最大编号

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


加好友 发短信
等级:二尾狐 帖子:535 积分:3891 威望:0 精华:0 注册:2018/1/3 16:03:00
  发帖心情 Post By:2022/6/16 17:40:00 [只看该作者]

谢谢蓝老师

 回到顶部