注册 登录
编程论坛 VFP论坛

求replace命令如何指定第二行及以下全部记录

yd1954 发布于 2022-02-14 10:46, 1807 次点击
各位老师好!
我想用replace将qihao字段的第二行(第二条)记录及以下全部记录更新到同表的记录号b字段。
use n1n2
go 2
repl 记录号b with qihao next rest

执行后显示“找不到变量rest”
查帮助replace里的scope子句,其中的rest示列
repl status with .null. rest
这里的status是什么意思,.null.(空值)在这里是什么意思。
请老师们不吝赐教。
14 回复
#2
吹水佬2022-02-14 10:54
repl 记录号b with qihao rest
#3
yd19542022-02-14 11:44
回复 2楼 吹水佬
吹水佬老师,你好。
感谢你的帮助。
repl 记录号b with qihao rest 执行得到的结果是,第二行记录仍在记录号b字段的第二行。能否让第二行记录存放在记录号b字段第一行。
#4
吹水佬2022-02-14 12:34
回复 3楼 yd1954
不是从第2行起至尾吗?
怎又变到第1行去?
文字说不清楚,随便写几条记录举例看看好了
#5
yd19542022-02-14 12:53
回复 4楼 吹水佬
吹水佬老师,你好!
以下是执行后的情况

序号     qihao        序号   记录号b
 1      2002001        1     xxxxxx
 2      2002002        2     2002002
 3      2002003        3     2002003
 4      2002004        4     2002004
 5      2002005        5     2002005

希望实现的

序号      qihao        序号   记录号b
 1       2002001        1     2002002      
 2       2002002        2     2002003   
 3       2002003        3     2002004
 4       2002004        4     2002005
 5       2002005        5     2002006

希望老师给与帮助。
#6
laowan0012022-02-14 13:46
update a set a.记录号b=b.qihao FROM n1n2 a,(select 序号,qihao FROM n1n2) b
where a.序号=b.序号+1


[此贴子已经被作者于2022-2-14 15:32编辑过]

#7
吹水佬2022-02-14 14:09
回复 5楼 yd1954
从下面往上走一次就可以
#8
yd19542022-02-14 15:05
回复 7楼 吹水佬
吹水佬老师,你好!
你说:“从下面往上走一次就可以”

可是我不会你说的“走”,还请老师帮助。
#9
吹水佬2022-02-14 15:07
回复 8楼 yd1954
程序代码:
GO BOTTOM
qh = qihao
SKIP -1
DO WHILE !BOF()
    REPLACE 记录号b WITH qh
    qh = qihao
    SKIP -1
ENDDO
#10
gs25367856782022-02-14 15:25
吹水佬做法,我深以为是:
写代码就要不怕麻烦,情愿多写
以明白期中的奥秒。
第一步,repl语句,从第二行到第二行
第二步,循环,每行向上走一步。
#11
吹水佬2022-02-14 15:41
以下是引用gs2536785678在2022-2-14 15:25:31的发言:

吹水佬做法,我深以为是:
写代码就要不怕麻烦,情愿多写
以明白期中的奥秒。
第一步,repl语句,从第二行到第二行
第二步,循环,每行向上走一步。

就是取当前记录放到上一个记录,是最基本的算法语句,只需扫描一次表,效率够算高的了。
也可以用关联表算法,从一个影子表直接取数,6楼的也是类似算法。
如果不是追求所谓的更高大上,多写几行简单易读代码有利打好编程基础。
#12
hu9jj2022-02-14 16:54
建议楼主多熟悉一下select语句,掌握之后您就会发现记录在数据表中的位置是可以不用理会的。
#13
mywisdom882022-02-14 17:28
以下是引用yd1954在2022-2-14 12:53:38的发言:

吹水佬老师,你好!
以下是执行后的情况

序号     qihao        序号   记录号b
 1      2002001        1     xxxxxx
 2      2002002        2     2002002
 3      2002003        3     2002003
 4      2002004        4     2002004
 5      2002005        5     2002005

希望实现的

序号      qihao        序号   记录号b
 1       2002001        1     2002002      
 2       2002002        2     2002003   
 3       2002003        3     2002004
 4       2002004        4     2002005
 5       2002005        5     2002006

希望老师给与帮助。

最后的数据,应该是这样的
序号      qihao        序号   记录号b
 1       2002001        1     2002002      
 2       2002002        2     2002003   
 3       2002003        3     2002004
 4       2002004        4     2002005
 5       2002005        5     2002006
 6       2002006        6     NULL 或者 空
#14
yd19542022-02-15 09:54
回复 12楼 hu9jj
非常感谢老师的指导。我会多看,细心体会select语句的内涵,灵活性。
#15
yd19542022-02-15 09:56
回复 11楼 吹水佬
感谢老师的指教。
1