Foxtable(狐表)用户栏目专家坐堂 → [求助]行的前移后移在筛选状态下如何进行?


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

主题:[求助]行的前移后移在筛选状态下如何进行?

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


加好友 发短信
等级:婴狐 帖子:88 积分:844 威望:0 精华:0 注册:2013/10/15 15:04:00
[求助]行的前移后移在筛选状态下如何进行?  发帖心情 Post By:2015/1/7 9:24:00 [只看该作者]

狐爸,

表中的行上移和下移在筛选状态时,处理起来是不是比较麻烦?我用下面的代码,处理下移会出错,执行后当前行被移到最后,并没有按sort字段排序,

同样的代码,在上移中(少 DESC)却是可以正常执行。

Dim tb As Table = Tables("w_set_table")
If  tb.Position<tb.Rows.Count-1 Then

    tb.Sort=""
    'tb.current.move(tbl.Position + 1) '向下移动一行
    tb.current("II0")=tb.current("II0")+1
    tb.Sort="II0,id DESC"
End If

 

Dim tb As Table = Tables("w_set_table")
tb.Sort=""
If  tb.Position>=0 Then
    'tb.current.move(tb.Position - 1) '向上移动一行
    tb.current("II0")=tb.current("II0")-1
    tb.Sort="II0,id"
End If

 

为什么会这样呢?怎么处理才好。

谢谢!

[此贴子已经被作者于2015-1-7 9:33:43编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/1/7 9:28:00 [只看该作者]

你这反复排序是什么意思?



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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/1/7 9:32:00 [只看该作者]

你说下你的需求,你上要实现什么.  为什么要这也反复排序.浪费性能不说,还有奇怪的错误发生.

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


加好友 发短信
等级:婴狐 帖子:88 积分:844 威望:0 精华:0 注册:2013/10/15 15:04:00
  发帖心情 Post By:2015/1/7 9:38:00 [只看该作者]

需求很简单啊,就是让表里的某一行上移一行或下移一行,前提是这个表是有排序的。所以要用tb.current.move(tbl.Position + 1) '向下移动一行,在有排序的时候,这命令好像不能用。

我先取消排序,然后给排序的字段赋值,再恢复排序。

除此之外,还有什么更好的办法?


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/1/7 9:42:00 [只看该作者]

如果是这样,你无需取消排序

tb.current("II0")=tb.current("II0")+1
    tb.Sort="II0,id DESC"

直接这样操作一次即可   有问题的话,就传个例子上来我看看

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


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

 上移下移,不是加1减1啊,是交换上下行的排序的值啊。

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


加好友 发短信
等级:婴狐 帖子:88 积分:844 威望:0 精华:0 注册:2013/10/15 15:04:00
  发帖心情 Post By:2015/1/7 9:47:00 [只看该作者]

这还要传例子吗?这么简单的东西,在一个有筛选的表里,你怎么移动表里的行?

这种表的记录一般不多,所以不用考虑性能浪费的问题。


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/1/7 9:49:00 [只看该作者]

看 5 6楼.

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


加好友 发短信
等级:婴狐 帖子:88 积分:844 威望:0 精华:0 注册:2013/10/15 15:04:00
  发帖心情 Post By:2015/1/7 9:50:00 [只看该作者]

我用的筛选字段ii0下移,就是+1后,就和下一条的ii0一样,这样两个ii0一样的,排序时不见得刚才移动的行会排到后面去,如果排前面,那么刚才要移动的行,实际上是没动。

我加了一个ID就是为了避免这种情况,但是似乎起不到作用。

[此贴子已经被作者于2015-1-7 9:50:54编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/1/7 9:56:00 [只看该作者]

要互相交换
dim c as integer = tb.current("II0")
dim r = tb.rows(tb.current.index+1)("II0")
tb.current("II0")=r("II0")
r("II0")=c




 回到顶部
总数 20 1 2 下一页