标题:请教dbf表排序
只看楼主
hyf8285
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2013-1-21
结帖率:92.86%
已结贴  问题点数:50 回复次数:24 
请教dbf表排序
请教大佬:现有一个表结构如下,想实现这样的效果,如果把c移到最上,则c的序号变为1,a变为2,b变为3,d还是4,e还是5,请问如何实现?谢谢!
字段     序号      新序号
 a         1          2
 b         2          3
 c         3          1
 d         4          4
 e         5          5
搜索更多相关主题的帖子: 效果 字段 序号 排序 dbf 
2022-07-12 11:27
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
无规律,无法批量处理
如果非要做,只能交换位置
2022-07-12 11:50
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
按RECNO()重新排序试试

坚守VFP最后的阵地
2022-07-12 12:14
hyf8285
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2013-1-21
得分:0 
回复 2楼 mywisdom88
是的,就是要交换位置,想知道如何交换?就是交换后要重新排,记录前面的要变,记录后面的不变
2022-07-12 12:16
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:0 
select 字段, 新序号 as 序号 from 原表 order by 2 into dbf 新表
2022-07-12 12:21
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:0 
以下是引用hyf8285在2022-7-12 11:27:37的发言:

请教大佬:现有一个表结构如下,想实现这样的效果,如果把c移到最上,则c的序号变为1,a变为2,b变为3,d还是4,e还是5,请问如何实现?谢谢!
字段     序号      新序号
 a         1          2
 b         2          3
 c         3          1
 d         4          4
 e         5          5

go 1
x=字段
go 3
y=字段
repl 字段 with x
go 1
repl 字段 with y

只求每天有一丁点儿的进步就可以了
2022-07-12 12:24
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:30 
CREATE CURSOR tt (字段 c(1), 序号 n(2))
INSERT INTO tt VALUES ("a", 1)
INSERT INTO tt VALUES ("b", 2)
INSERT INTO tt VALUES ("c", 3)
INSERT INTO tt VALUES ("d", 4)
INSERT INTO tt VALUES ("e", 5)
SELECT * FROM tt WHERE 字段 = "c" INTO CURSOR tt1 READWRITE
INSERT INTO tt1 SELECT * FROM tt WHERE 字段 != "c"
REPLACE 序号 WITH RECNO() ALL
BROWSE

坚守VFP最后的阵地
2022-07-12 12:32
hyf8285
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2013-1-21
得分:0 
感谢各位大佬,这只是其中的一种情况,我想任意实现移动记录,比如,我想把d移到第一个,或者把b移到第一个,移动的记录是不固定的
2022-07-12 12:33
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
CREATE CURSOR tt (字段 c(1), 序号 n(2))
INSERT INTO tt VALUES ("a", 1)
INSERT INTO tt VALUES ("b", 2)
INSERT INTO tt VALUES ("c", 3)
INSERT INTO tt VALUES ("d", 4)
INSERT INTO tt VALUES ("e", 5)
lc = "c"
SELECT * FROM tt WHERE 字段 = lc INTO CURSOR tt1 READWRITE
INSERT INTO tt1 SELECT * FROM tt WHERE 字段 != lc
REPLACE 序号 WITH RECNO() ALL
BROWSE

坚守VFP最后的阵地
2022-07-12 12:42
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
以下是引用hyf8285在2022-7-12 12:33:10的发言:

感谢各位大佬,这只是其中的一种情况,我想任意实现移动记录,比如,我想把d移到第一个,或者把b移到第一个,移动的记录是不固定的

是不是要这样的效果,
原来

变化
2022-07-12 13:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-509545-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.066746 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved