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


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

主题:[求助]自动编号BUG

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


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

以下是引用gfj7126在2017/11/8 16:39:00的发言:

 这个方法新增一行就保存还是可行的,如果新多行再保存,所有新增行的编号就会是一样的。

 

[此贴子已经被作者于2017/11/8 17:11:10编辑过]

 

不能写到beforesavedatarow事件,在DataRowAdded事件写代码

 

e.DataRow("日期") = Date.Today()

Dim bh As String = Format(e.DataRow("日期"),"yyMMdd") '取得编号的8位前缀
If e.DataRow("单据编号").StartsWith(bh) = False '如果编号的前8位不符
    Dim max As String
    Dim idx As Integer
    max = e.DataTable.sqlCompute("Max(单据编号)","日期 = #" & e.DataRow("日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该天的最大编号
    If max > "" Then '如果存在最大编号
        idx = CInt(max.Substring(6,4)) + 1 '获得最大编号的后三位顺序号,并加1
    Else
        idx = 1 '否则顺序号等于1
    End If
    e.DataRow("单据编号") = bh & "" & Format(idx,"0000")
    e.DataRow.save
End If


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


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

以下是引用gfj7126在2017/11/8 16:39:00的发言:

 这个方法新增一行就保存还是可行的,如果新多行再保存,所有新增行的编号就会是一样的。

 

[此贴子已经被作者于2017/11/8 17:11:10编辑过]

 

如果要写到beforesavedatarow事件,你保存项目的时候,你就要一行一行的保存数据,不能整体保存。


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


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

DataRowAdded 事件,执行 e.DataRow.save 会保存数据到数据库的。你要认真测试。

 

重号问题,参考

 

http://www.foxtable.com/webhelp/scr/3008.htm

 

http://www.foxtable.com/webhelp/scr/1994.htm

 


 回到顶部