Foxtable(狐表)用户栏目专家坐堂 → [求助]子表如何自动增加序号


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

主题:[求助]子表如何自动增加序号

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


加好友 发短信
等级:一尾狐 帖子:475 积分:3548 威望:0 精华:0 注册:2012/8/30 10:58:00
[求助]子表如何自动增加序号  发帖心情 Post By:2015/6/4 19:54:00 [只看该作者]

建立3个表,表A为父表,表A.表B,表A.表B.表C
想实现的目标为:
点击表A.表B.表C,使这个表的编号自动增加,如何编码?不是使用_IDENTYFY
如附件所示
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:475 积分:3548 威望:0 精华:0 注册:2012/8/30 10:58:00
  发帖心情 Post By:2015/6/4 20:48:00 [只看该作者]

非常感谢

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


加好友 发短信
等级:一尾狐 帖子:475 积分:3548 威望:0 精华:0 注册:2012/8/30 10:58:00
  发帖心情 Post By:2015/6/4 21:07:00 [只看该作者]

大红袍,你好,这段代码在使用过程中,发现不是在太完美,假如,表A.表B.表C中有10行,序号从1排到10,现在我删除其中的第6行,再点击“增加明细”,发现最后新增一行的编号为10,这样就产生了编号有两个10,编号不唯一,如何解决这个问题?

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/6/4 21:26:00 [只看该作者]

 删除一行的时候重新编号

 

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

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

Next


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


加好友 发短信
等级:一尾狐 帖子:475 积分:3548 威望:0 精华:0 注册:2012/8/30 10:58:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:88 积分:518 威望:0 精华:0 注册:2015/5/3 21:12:00
  发帖心情 Post By:2015/6/4 21:47:00 [只看该作者]

 写到删除行事件 DataRowDeleted 事件啊

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍01
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:88 积分:518 威望:0 精华:0 注册:2015/5/3 21:12:00
  发帖心情 Post By: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


 回到顶部