以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]子表如何自动增加序号  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=69418)

--  作者:czgtiger
--  发布时间:2015/6/4 19:54:00
--  [求助]子表如何自动增加序号
建立3个表,表A为父表,表A.表B,表A.表B.表C
想实现的目标为:
点击表A.表B.表C,使这个表的编号自动增加,如何编码?不是使用_IDENTYFY
如附件所示
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar


--  作者:大红袍
--  发布时间:2015/6/4 20:24:00
--  

DataRowAdded事件

 

Dim idx As Integer = Tables("表A.表B.表C").FindRow(e.DataRow)
If idx > -1 Then
    e.DataRow("编号") = idx + 1
End If


--  作者:czgtiger
--  发布时间:2015/6/4 20:48:00
--  
非常感谢
--  作者:czgtiger
--  发布时间:2015/6/4 21:07:00
--  
大红袍,你好,这段代码在使用过程中,发现不是在太完美,假如,表A.表B.表C中有10行,序号从1排到10,现在我删除其中的第6行,再点击“增加明细”,发现最后新增一行的编号为10,这样就产生了编号有两个10,编号不唯一,如何解决这个问题?
--  作者:大红袍
--  发布时间:2015/6/4 21:26:00
--  

 删除一行的时候重新编号

 

For Each r As Row In Tables("表A.表B.表C").Rows

    r("编号") = r.Index + 1

Next


--  作者:czgtiger
--  发布时间:2015/6/4 21:46:00
--  
删除时,这段代码是放在删除按钮上吗?如果是的话,检验了一遍,发现,虽然编号不重复了,可是还是未达到想要的效果。我想要的效果是:如果编号为:1,2,3,4,5,6,7,8,9,10。如果我删除其中的第5行,也就是说在窗口中看到是:1,2,3,4,6,7,8,9,10这9行,此时,我再点击增加明细这个按钮,新的排列编号为:1,2,3,4,6,7,8,9,10,11,不知这样说,是否能明白我的意思?
--  作者:大红袍01
--  发布时间:2015/6/4 21:47:00
--  
 写到删除行事件 DataRowDeleted 事件啊
--  作者:大红袍01
--  发布时间:2015/6/4 21:53:00
--  

1、编号列改成数值列;

 

2、Datacolchanged事件写代码

 

If e.DataCol.Name = "序号" Then
    Dim max As String = e.DataTable.Compute("max(编号)", "序号 = \'" & e.DataRow("序号") & "\'")
    If max > "" Then
        e.DataRow("编号") = max + 1
    Else
        e.DataRow("编号") = 1
    End If
End If