标题:请教dbf表排序
只看楼主
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:10 
CREATE CURSOR t0(序号 i,姓名 C(10),其他 C(10))
INSERT INTO T0(序号,姓名,其他) VALUES(1,'A1','其他1')
INSERT INTO T0(序号,姓名,其他) VALUES(2,'A2','其他2')
INSERT INTO T0(序号,姓名,其他) VALUES(3,'A3','其他3')
INSERT INTO T0(序号,姓名,其他) VALUES(4,'A4','其他4')
INSERT INTO T0(序号,姓名,其他) VALUES(5,'A5','其他5')
INSERT INTO T0(序号,姓名,其他) VALUES(6,'A6','其他6')

BROWSE

swap(2,5,'t0')

BROWSE


FUNCTION swap(n1,n2,dbf1)
 SELECT * FROM (dbf1) WHERE 序号 = n1 INTO ARRAY a1
 SELECT * FROM (dbf1) WHERE 序号 = n2 INTO ARRAY a2
 SELECT (dbf1)
 GO n1
 GATHER FROM A2
 REPLACE 序号 WITH n1
 GO n2
 GATHER FROM A1
 REPLACE 序号 WITH n2
ENDFUNC
2022-07-12 13:16
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
“现有一个表结构如下,想实现这样的效果”

如果是改表结构:
select c,a,b,d,e from 旧表 into table 新表

如果是改记录顺序:
select * from 旧表 order by 新序号 into table 新表
2022-07-12 13:18
hyf8285
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2013-1-21
得分:0 
回复 11楼 mywisdom88
谢谢版主,你这个是交换两个记录的顺序吧?
2022-07-12 13:28
hyf8285
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2013-1-21
得分:0 
sdta版主的方法可行
2022-07-12 13:29
hyf8285
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2013-1-21
得分:0 
回复 11楼 mywisdom88
交换两个记录的顺序正好也是我需要的,谢谢!
2022-07-12 13:35
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
以下是引用hyf8285在2022-7-12 13:28:57的发言:

谢谢版主,你这个是交换两个记录的顺序吧?

*******如果序号,不是物理的序号,改改

CREATE CURSOR t0(序号 i,姓名 C(10),其他 C(10))
INSERT INTO T0(序号,姓名,其他) VALUES(1,'A1','其他1')
INSERT INTO T0(序号,姓名,其他) VALUES(3,'A3','其他3')
INSERT INTO T0(序号,姓名,其他) VALUES(5,'A5','其他5')
INSERT INTO T0(序号,姓名,其他) VALUES(2,'A2','其他2')
INSERT INTO T0(序号,姓名,其他) VALUES(4,'A4','其他4')
INSERT INTO T0(序号,姓名,其他) VALUES(6,'A6','其他6')

BROWSE

swap(2,5,'t0')

BROWSE

FUNCTION swap(n1,n2,dbf1)
SELECT * FROM (dbf1) WHERE 序号 = n1 INTO ARRAY a1
SELECT * FROM (dbf1) WHERE 序号 = n2 INTO ARRAY a2

SELECT (dbf1)
LOCATE FOR 序号=n1
GATHER FROM A2
REPLACE 序号 WITH n1
LOCATE FOR 序号=n2
GATHER FROM A1
REPLACE 序号 WITH n2
ENDFUNC
2022-07-12 13:46
hyf8285
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2013-1-21
得分:0 
回复 16楼 mywisdom88
谢谢!你的方法具有通用性,可以任意调换记录的顺序
2022-07-12 14:09
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
以下是引用hyf8285在2022-7-12 14:09:40的发言:

谢谢!你的方法具有通用性,可以任意调换记录的顺序

以下是引用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

题目要求数据记录不变动的吧,只是重新定义序号(新序号)
2022-07-12 15:03
hyf8285
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2013-1-21
得分:0 
回复 18楼 吹水佬
是的!吹版
2022-07-12 15:35
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用hyf8285在2022-7-12 15:35:02的发言:

是的!吹版

那到底是 记录保持不变 还是要 交换记录 ?
2022-07-12 15:44



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




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

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