标题:菜鸟问题:关于replace
只看楼主
sxlgg
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2021-1-21
结帖率:75%
已结贴  问题点数:10 回复次数:15 
菜鸟问题:关于replace
replace bz with "f" for dw="111" and gz<=880

我单个运行就直接替换2个记录,请问这是怎么回事,要怎么解决
replace bz with "f" for dw="111"
运行这个,就全部替换了。多个替换不是要加All的吗

[此贴子已经被作者于2021-6-27 11:12编辑过]

搜索更多相关主题的帖子: with 替换 运行 replace for 
2021-06-27 11:10
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:2 
满足for条件的记录都替换
2021-06-27 11:13
sxlgg
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2021-1-21
得分:0 
回复 2楼 吹水佬
程序中要只替换1个,要怎么处理
2021-06-27 11:15
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用sxlgg在2021-6-27 11:15:51的发言:

程序中要只替换1个,要怎么处理

if dw="111" and gz<=880
    replace bz with "f"
endif
2021-06-27 11:58
gs2536785678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:45
帖 子:565
专家分:1668
注 册:2017-7-16
得分:2 
这需要看你表的内容才能确定,例如说,你字段dw内容都是111
2021-06-27 12:51
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:2 
replace bz with "f" for dw="111" and gz<=880
这是二个条件同时满足,才修改BZ

replace bz with "f" for dw="111"
这是只满足一个条件,就修改BZ。 肯定是这个修改的内容多

只求每天有一丁点儿的进步就可以了
2021-06-28 09:50
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
得分:2 
普及一下基础知识:
1、Replace 命令不带FOR/WHILE 条件时,默认范围是当前记录,即:Next 1
2、带FOR条件时,默认范围是所有记录,即:ALL
3、带WHILE条件时,默认范围是当前记录之后的所有记录,即:REST
4、带FOR条件,同时又带WHILE条件,则WHILE条件优先,默认范围是:REST

泉城飞狐
2021-06-30 09:04
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:2 
以下是引用liuxingang28在2021-6-30 09:04:01的发言:

普及一下基础知识:
1、Replace 命令不带FOR/WHILE 条件时,默认范围是当前记录,即:Next 1
2、带FOR条件时,默认范围是所有记录,即:ALL
3、带WHILE条件时,默认范围是当前记录之后的所有记录,即:REST
4、带FOR条件,同时又带WHILE条件,则WHILE条件优先,默认范围是:REST


不带条件时,只替换当前记录;
后面加ALL时,替换所有记录;
带FOR条件时,是替换符合条件的所有记录。

[此贴子已经被作者于2021-7-3 09:11编辑过]


活到老,学到老! http://www. E-mail:hu-jj@
2021-07-03 08:48
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:2 
以下是引用liuxingang28在2021-6-30 09:04:01的发言:

普及一下基础知识:
1、Replace 命令不带FOR/WHILE 条件时,默认范围是当前记录,即:Next 1
2、带FOR条件时,默认范围是所有记录,即:ALL
3、带WHILE条件时,默认范围是当前记录之后的所有记录,即:REST
4、带FOR条件,同时又带WHILE条件,则WHILE条件优先,默认范围是:REST

好像不对吧

坚守VFP最后的阵地
2021-07-04 08:49
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
得分:0 
回复 9楼 sdta
带 while 条件时的默认范围是 Rest, 可用下例来验证:
表 employee.dbf 记录如下:
==========================
name   dept   salary
- - - - - - - - - - - - -
张三   信息   4000
李四   信息   4500
王五   财务   6000
马六   财务   4200
闫七   设计   7000
刘八   设计   6800
==========================
执行如下命令:
loca for dept='财务'
repl salary with salary+100 while dept='财务'

命令执行完后,财务处人员的工资均增加了100元,而记录指针停留在第 5 条记录上。
如果将上述命令加上范围语句 rest,即:repl rest salary with salary+100 while dept='财务',执行结果与原命令相同。

通过以上例子,可以验证“带 while 条件时的默认范围是 Rest”

[此贴子已经被作者于2021-7-14 11:23编辑过]


泉城飞狐
2021-07-14 11:20



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




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

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