| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2201 人关注过本帖
标题:从字段列表中循环找到字段值为0(字符型)的替换为空,为什么不成功,请教 何处 ...
只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:34 
从字段列表中循环找到字段值为0(字符型)的替换为空,为什么不成功,请教 何处出错了
CLOSE DATABASES
 USE ls.DBF
for I=4 To Fcount()   &&我从第4个字段开始
cfield=fields(i)
REPLACE  &cfield. WITH " "for alltr(fields(i))='0'&&&只要是0的用空格替换。
ENDFOR
ls.rar (17.46 KB)
2015-05-21 14:54
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:3 
USE ls
SCAN
    FOR i = 4 TO FCOUNT()
        IF ALLTRIM(EVALUATE(FIELD(i))) == "0"
            REPLACE (FIELD(i)) WITH ""
        ENDIF
    ENDFOR
ENDSCAN
2015-05-21 15:31
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:3 
以下是引用sylknb在2015-5-21 14:54:57的发言:

CLOSE DATABASES
 USE ls.DBF
for I=4 To Fcount()   &&我从第4个字段开始
cfield=fields(i)
REPLACE  &cfield. WITH " "for alltr(fields(i))='0'&&&只要是0的用空格替换。
ENDFOR
红色部分为什么不用那个cfield变量呢?
2015-05-21 15:43
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用吹水佬在2015-5-21 15:31:40的发言:

USE ls
SCAN
    FOR i = 4 TO FCOUNT()
        IF ALLTRIM(EVALUATE(FIELD(i))) == "0"
            REPLACE (FIELD(i)) WITH ""
        ENDIF
    ENDFOR
ENDSCAN
行的,我的代码错在哪里?
在命令窗中:例如字段为ZF中把0的替换为""
         replace zf with " " for alltrim(zf)="0"
      是可行的,全部含有0都替换了。
       现只要把字段逐个循环不也是可行吗
                FOR i = 4 TO FCOUNT()
                     cfiel=field(i)
             replace &cfiel with " " for alltrim(field(i))="0"
                endfor
为什么还要SCAN  
           IF
            END
         ENDSCA
  

[ 本帖最后由 sylknb 于 2015-5-21 15:55 编辑 ]
2015-05-21 15:45
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
alltrim(zf)返回的是字段的值,如:"0"
alltrim(field(i))返回的是字段的名,如:"zf"
2015-05-21 16:00
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:3 
FOR I=4 TO FCOUNT()
    BLANK ALL FIELDS (FIELD(I)) FOR ALLTRIM(EVALUATE(FIELD(I)))=="0"
ENDFOR

坚守VFP最后的阵地
2015-05-21 16:07
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
理论与实践相结合,活学活用。
对所用函数没有做到真正熟练掌握的程度。

[ 本帖最后由 sdta 于 2015-5-21 16:12 编辑 ]

坚守VFP最后的阵地
2015-05-21 16:11
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:3 
对的 用BLANK ALL ... FOR
2015-05-21 16:13
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:3 
以下是引用sdta在2015-5-21 16:07:40的发言:

FOR I=4 TO FCOUNT()
    BLANK ALL FIELDS (FIELD(I)) FOR ALLTRIM(EVALUATE(FIELD(I)))=="0"
ENDFOR

你知道未知的字段類型都是字符型就敢用alltrim()?還跟字符型"0"做邏輯比較?

授人以渔,不授人以鱼。
2015-05-21 16:58
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
alltrim(zf)返回的是字段的值,如:"0"
alltrim(field(i))返回的是字段的名,如:"zf"
 一直理介为 for alltrim(field(i))='0'中提出字段名zf,它的值等于0 与for alltrim(zf)='0'应是等同的
从ALLTRIM(EVALUATE(FIELD(I)))=="0"中来理介==前半句是计算出字段的值,假如是0,则等号前面的0等于等号后面的0-->0==0
zf=0与field(i))=0是不同的。
上述理介不知对否?
2015-05-21 17:06
快速回复:从字段列表中循环找到字段值为0(字符型)的替换为空,为什么不成功,请教 ...
数据加载中...
 
   



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

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