Foxtable(狐表)用户栏目专家坐堂 → 关于帮助中“自动编号生成方法”一节的疑惑


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

主题:关于帮助中“自动编号生成方法”一节的疑惑

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


加好友 发短信
等级:婴狐 帖子:99 积分:1589 威望:0 精华:0 注册:2011/9/19 0:57:00
关于帮助中“自动编号生成方法”一节的疑惑  发帖心情 Post By:2012/3/17 3:19:00 [显示全部帖子]

帮助中如下说

二、按日生成编号

假定有个表,需要按天自动生成编号,四位年,两位月,两位日,最后三位是顺序号,如下图所示:

 

要自动生成上述编号,代码更加简单:

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("日期") & "#") '取得该天的最大编号
           
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

 

然而在实践中发现,却是有缺陷,这种编号只适用于新加行时,但一旦你在原来的行里进行日期修改时就会有错误。如下图

 新加行时,选择日期,生成的单号是没有问题的。


此主题相关图片如下:1.png
按此在新窗口浏览图片

在原来日期上面,重新选择另外一个日期时,生成的单号是有问题的。(实际应该为20120302-001)

此主题相关图片如下:2.png
按此在新窗口浏览图片

不知,各位有没有好的更改的方法?

[此贴子已经被作者于2012-3-17 3:21:32编辑过]

 回到顶部