Foxtable(狐表)用户栏目专家坐堂 → [求助]关于自动编号生成


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

主题:[求助]关于自动编号生成

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/24 19:55:00 [显示全部帖子]

datacolchaned事件

 

Select Case e.DataCol.name
    Case "签订日期", "领域"
        Dim bh As String = e.DataRow("领域") & Format(e.DataRow("签订日期"),"yyMMdd") '取得编号的7位前缀
       
        Dim max As String
       
        Dim idx As Integer
       
        max = e.DataTable.Compute("Max(合同单号)","领域 = '" & e.DataRow("领域") & "' And 签订日期 = #" & e.DataRow("签订日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该天的最大编号
       
        If max > "" Then '如果存在最大编号
           
            idx = CInt(max.Substring(bh.length,3)) + 1 '获得最大编号的后三位顺序号,并加1
           
        Else
           
            idx = 1 '否则顺序号(起始号)等于1(有签订日期,无合同编号时的判断)
           
        End If
       
        e.DataRow("合同单号") = bh & Format(idx,"000")
       
end select


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/25 9:23:00 [显示全部帖子]

不增加列无法实现的,除非你用sqlcompute http://www.foxtable.com/webhelp/scr/2897.htm

 

使用compute获取最大值的话,要加一列表达式列,把签订日期+编号的值存放起来,根据此表达式列得到最大值。

 

或者是,改成循环每一行获取最大值,如

 

For Each dr As DataRow in e.DataTable.DataRows

  

Next


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/26 9:02:00 [显示全部帖子]


增加了表达式列[编号],可以用Max统计该列最大编号,但由于某种操作,是会删除中间部分曾用过的报告编号,如附件所示,删除的BA00210、BA00211两个编号已被删除,但希望能加以判断优先使用曾被删除的编号,再去使用最大编号,请问该怎么实现呢?

[此贴子已经被作者于2017/12/26 0:06:04编辑过]

 

参考 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=85293&skin=0

 


 回到顶部