Foxtable(狐表)用户栏目专家坐堂 → [求助]表中数据重新排序后编号问题


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

主题:[求助]表中数据重新排序后编号问题

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


加好友 发短信
等级:五尾狐 帖子:1014 积分:7535 威望:0 精华:0 注册:2010/4/12 12:23:00
[求助]表中数据重新排序后编号问题  发帖心情 Post By:2018/11/30 19:02:00 [只看该作者]

如图:


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

筛选表中共24行,更改列("先后顺序")中的数字重新编号。我的思路:

列中数据更改后,将行移动到相应的位置后,通过列的相应位置重新生成新的编号。代码有问题,代码如下:

'''
If e.DataCol.Name = "先后顺序" Then
    Dim c As Integer = 1
    If e.DataRow.IsNull("检验项目") Then
        MessageBox.Show("因无具体的检查项目无法进行先后排序,请予以补充!,","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        Return
    Else
        Tables("检验资料维护").Filter = "[检验项目]='" & e.DataRow("检验项目") & "'"
        With CurrentTable
            Dim i As  Integer = .Rows.Count
            If e.NewValue Is Nothing Then
                .Current.Move(i-1)
            Else
                .Current.Move(e.NewValue-1)
            End If
        End With

        For Each r As Row In CurrentTable.Rows
            r("先后顺序") = r.Index+1
        Next
        
    End If
End If

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


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/11/30 19:57:00 [只看该作者]

不应该在datacolchanged事件做这事。你可以到插入行、删除行、移动行事件处理

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


加好友 发短信
等级:五尾狐 帖子:1014 积分:7535 威望:0 精华:0 注册:2010/4/12 12:23:00
  发帖心情 Post By:2018/11/30 20:05:00 [只看该作者]

因为我想通过改变“先后顺序”中的数据,进行重新排序,在动态地生成另外一个表(它的列的先后通过这个值来控制)。

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


加好友 发短信
等级:五尾狐 帖子:1014 积分:7535 威望:0 精华:0 注册:2010/4/12 12:23:00
  发帖心情 Post By:2018/11/30 20:08:00 [只看该作者]

那把这个分成两段,datacolchanged完成行的移动。在移动行的事件中在重新编码。但如果涉及删除行和添加行。有点头大。
[此贴子已经被作者于2018/11/30 20:11:15编辑过]

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


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/11/30 20:38:00 [只看该作者]

一样的用法。不会就上传实例

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


加好友 发短信
等级:五尾狐 帖子:1014 积分:7535 威望:0 精华:0 注册:2010/4/12 12:23:00
  发帖心情 Post By:2018/12/2 16:06:00 [只看该作者]

上传例子。我做了,老是有问题。想在表(检验资料维护)进行筛选后的表(筛选条件:检验项目)中实现:

1.通过在列(先后顺序)键入相应的值,然后将行移动到相应的位置,并按1,2,....的顺序对列(先后顺序)重新编号。
2.删除行后,对列(先后顺序)按1,2,3,.....重新编号。
3.新增行,对列(先后顺序)的最大值自动加+1

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:li.foxdb





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


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

1、不应该在datacolchanged那里写代码处理。

 

2、你可以直接移动行(上移行、下移行等方式)后,重新编号,如

 

For Each r As Row In Tables("检验资料维护").Rows
    r("先后顺序") = r.Index + 1
Next

 

3、或者你手动输入【先后顺序】以后,再点击按钮重新生成所有编号


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


加好友 发短信
等级:五尾狐 帖子:1014 积分:7535 威望:0 精华:0 注册:2010/4/12 12:23:00
  发帖心情 Post By:2018/12/2 22:14:00 [只看该作者]

移动行的代码写在哪个事件中,如果写在datacochanged中会造成多重循环
有点晕!

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


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

以下是引用cqlwsam在2018/12/2 22:14:00的发言:
移动行的代码写在哪个事件中,如果写在datacochanged中会造成多重循环
有点晕!

 

如果只是多重循环,看看 http://www.foxtable.com/webhelp/scr/2218.htm

 

写在按钮里面完全没问题吧?afterEdit等等也可以。


 回到顶部