标题:REPLACE ALL 使用变量问题
只看楼主
fdqzy
Rank: 1
等 级:新手上路
帖 子:354
专家分:0
注 册:2016-8-15
结帖率:76.81%
已结贴  问题点数:20 回复次数:5 
REPLACE ALL 使用变量问题
程序代码:
create cursor b1 (m c(3),m1 c(3))
insert into b1 values ("012","")
insert into b1 values ("10","")
insert into b1 values ("011","")
insert into b1 values ("201","")
insert into b1 values ("2","")

REPLACE ALL  m1 WITH IIF(LEFT(ALLTRIM(m),1)=='0',"M1","")
brow


统计正确

如果使用:
kk=LEFT(ALLTRIM(m),1)
REPLACE ALL  m1 WITH IIF(kk=='0',"M1","")
表达式全为假

应怎样使用变量?谢谢!
搜索更多相关主题的帖子: values insert 变量 into REPLACE 
2020-09-17 18:44
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
得分:10 
编程如同下围棋,先学定式,循序渐进,不要一味模仿别人的代码。
2020-09-17 19:39
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
以下是引用fdqzy在2020-9-17 18:44:08的发言:

如果使用:
kk=LEFT(ALLTRIM(m),1)
REPLACE ALL m1 WITH IIF(kk=='0',"M1","")
表达式全为假

应怎样使用变量?谢谢!


这两句相当于:
kk = (LEFT(ALLTRIM(m),1) == "0") && 当前记录
REPLACE ALL m1 WITH IIF(kk,"M1","") && 所有记录
这样做不能达到想要的结果,单这个问题也没必要这样做。
如果 kk 会被重复使用,参考下面贴的55楼
https://bbs.bccn.net/viewthread.php?tid=503137&extra=page%3D1%26amp%3Bfilter%3D0%26amp%3Borderby%3Dlastpost%26amp%3Bascdesc%3DDESC&page=6

2020-09-17 20:30
fdqzy
Rank: 1
等 级:新手上路
帖 子:354
专家分:0
注 册:2016-8-15
得分:0 
以下是引用吹水佬在2020-9-17 20:30:12的发言:



这两句相当于:
kk = (LEFT(ALLTRIM(m),1) == "0") && 当前记录
REPLACE ALL m1 WITH IIF(kk,"M1","") && 所有记录
这样做不能达到想要的结果,单这个问题也没必要这样做。
如果 kk 会被重复使用,参考下面贴的55楼
https://bbs.bccn.net/viewthread.php?tid=503137&extra=page%3D1%26amp%3Bfilter%3D0%26amp%3Borderby%3Dlastpost%26amp%3Bascdesc%3DDESC&page=6

懂了,效果理想,当初对这个帖子没有很好去理解,谢谢!
2020-09-17 20:56
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
如果 kk 会被重复使用,也可以这样,假设:kk为真时m1为"M1",kk为假时m2为"M2"
create cursor b1 (m c(3),m1 c(3), m2 c(3))
insert into b1 values ("012","","")
insert into b1 values ("10","","")
insert into b1 values ("011","","")
insert into b1 values ("201","","")
insert into b1 values ("2","","")

TEXT TO cmd NOSHOW PRETEXT 1
    kk=AT("0",LTRIM(m))==1
    RETURN kk
ENDTEXT
kk = .F.
REPLACE ALL m1 WITH IIF(EXECSCRIPT(cmd),"M1",""), m2 WITH IIF(!kk,"M2","")
BROWSE
2020-09-17 20:57
fdqzy
Rank: 1
等 级:新手上路
帖 子:354
专家分:0
注 册:2016-8-15
得分:0 
以下是引用吹水佬在2020-9-17 20:57:32的发言:

如果 kk 会被重复使用,也可以这样,假设:kk为真时m1为"M1",kk为假时m2为"M2"
create cursor b1 (m c(3),m1 c(3), m2 c(3))
insert into b1 values ("012","","")
insert into b1 values ("10","","")
insert into b1 values ("011","","")
insert into b1 values ("201","","")
insert into b1 values ("2","","")

TEXT TO cmd NOSHOW PRETEXT 1
    kk=AT("0",LTRIM(m))==1
    RETURN kk
ENDTEXT
kk = .F.
REPLACE ALL m1 WITH IIF(EXECSCRIPT(cmd),"M1",""), m2 WITH IIF(!kk,"M2","")
BROWSE

费心了,学习方法多多益善,也是成长的捷径。
对这些帖子我一定好好去学习研究,谢谢!
2020-09-17 21:45



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




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

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