注册 登录
编程论坛 VFP论坛

REPLACE ALL 使用变量问题

fdqzy 发布于 2020-09-17 18:44, 2322 次点击
程序代码:
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","")
表达式全为假

应怎样使用变量?谢谢!
5 回复
#2
bccn2012032020-09-17 19:39
编程如同下围棋,先学定式,循序渐进,不要一味模仿别人的代码。
#3
吹水佬2020-09-17 20:30
以下是引用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

#4
fdqzy2020-09-17 20:56
以下是引用吹水佬在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

懂了,效果理想,当初对这个帖子没有很好去理解,谢谢!
#5
吹水佬2020-09-17 20:57
如果 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
#6
fdqzy2020-09-17 21:45
以下是引用吹水佬在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

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