Foxtable(狐表)用户栏目专家坐堂 → 还是自动编号的求助


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

主题:还是自动编号的求助

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


加好友 发短信
等级:幼狐 帖子:71 积分:757 威望:0 精华:0 注册:2017/5/31 20:05:00
还是自动编号的求助  发帖心情 Post By:2017/8/26 22:49:00 [只看该作者]

老师,你好,我之前的提问如下

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&replyID=724111&ID=105813&skin=1

 

按照您的指点

出库表,,datarowadded事件,中用如下代码:

Dim bh As String = Format(e.DataRow("日期"),"QCyyyyMMdd-") '取得出库编号的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(bh.Length - 3,3)) + 1 '获得最大出库编号的后三位顺序号,并加1
    Else
        idx = 1 '否则顺序号等于1
    End If
    e.DataRow("出库编号") = bh & Format(idx,"000")
End If

 

增加行后,第一个是对的,以后的每一个都是025的编号,如图

 


图片点击可在新窗口打开查看此主题相关图片如下:4.png
图片点击可在新窗口打开查看

如果不要日期列

daterowadding事件中用如下代码:

 


Dim bh As String = Format(e.DataRow("日期"),"QCyyyyMMdd-")
Dim max As String
Dim idx As Integer
max = e.DataTable.Compute("Max(出库编号)","出库编号 like '" & bh & "%'") '查询此前缀的不好的最大值
If max > "" Then '如果存在最大编号
    idx = CInt(max.Substring(bh.Length - 3,3)) + 1
Else
    idx = 1 
End If
e.DataRow("出库编号") = bh & Format(idx,"000")
 
结果每一行都是错的。请老师帮助
 

图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/27 11:10:00 [只看该作者]

Dim bh As String = Format(e.DataRow("日期"),"QCyyyyMMdd-") '取得出库编号的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(bh.Length,3)) + 1 '获得最大出库编号的后三位顺序号,并加1
    Else
        idx = 1 '否则顺序号等于1
    End If
    e.DataRow("出库编号") = bh & Format(idx,"000")
End If
 

 回到顶部