以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]行的前移后移在筛选状态下如何进行? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=62722) |
-- 作者:sensen9025 -- 发布时间:2015/1/7 9:24:00 -- [求助]行的前移后移在筛选状态下如何进行? 狐爸, 表中的行上移和下移在筛选状态时,处理起来是不是比较麻烦?我用下面的代码,处理下移会出错,执行后当前行被移到最后,并没有按sort字段排序, 同样的代码,在上移中(少 DESC)却是可以正常执行。 Dim tb As Table = Tables("w_set_table") tb.Sort=""
Dim tb As Table = Tables("w_set_table")
为什么会这样呢?怎么处理才好。 谢谢! [此贴子已经被作者于2015-1-7 9:33:43编辑过]
|
-- 作者:Bin -- 发布时间:2015/1/7 9:28:00 -- 你这反复排序是什么意思? |
-- 作者:Bin -- 发布时间:2015/1/7 9:32:00 -- 你说下你的需求,你上要实现什么. 为什么要这也反复排序.浪费性能不说,还有奇怪的错误发生. |
-- 作者:sensen9025 -- 发布时间:2015/1/7 9:38:00 -- 需求很简单啊,就是让表里的某一行上移一行或下移一行,前提是这个表是有排序的。所以要用tb.current.move(tbl.Position + 1) \'向下移动一行,在有排序的时候,这命令好像不能用。 我先取消排序,然后给排序的字段赋值,再恢复排序。 除此之外,还有什么更好的办法? |
-- 作者:Bin -- 发布时间:2015/1/7 9:42:00 -- 如果是这样,你无需取消排序 tb.current("II0")=tb.current("II0")+1 tb.Sort="II0,id DESC" 直接这样操作一次即可 有问题的话,就传个例子上来我看看
|
-- 作者:有点甜 -- 发布时间:2015/1/7 9:46:00 -- 上移下移,不是加1减1啊,是交换上下行的排序的值啊。 |
-- 作者:sensen9025 -- 发布时间:2015/1/7 9:47:00 -- 这还要传例子吗?这么简单的东西,在一个有筛选的表里,你怎么移动表里的行? 这种表的记录一般不多,所以不用考虑性能浪费的问题。 |
-- 作者:Bin -- 发布时间:2015/1/7 9:49:00 -- 看 5 6楼. |
-- 作者:sensen9025 -- 发布时间:2015/1/7 9:50:00 -- 我用的筛选字段ii0下移,就是+1后,就和下一条的ii0一样,这样两个ii0一样的,排序时不见得刚才移动的行会排到后面去,如果排前面,那么刚才要移动的行,实际上是没动。 我加了一个ID就是为了避免这种情况,但是似乎起不到作用。 [此贴子已经被作者于2015-1-7 9:50:54编辑过]
|
-- 作者:Bin -- 发布时间: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 |