| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 382 人关注过本帖
标题:请高手指教这段代码错在哪?
只看楼主 加入收藏
smart921
Rank: 1
等 级:新手上路
帖 子:107
专家分:9
注 册:2010-8-8
结帖率:86.96%
收藏
已结贴  问题点数:10 回复次数:4 
请高手指教这段代码错在哪?
set talk off
use aaa
store hkjtzz to FIELDNAME
FOR I=1 TO LEN(FIELDNAME)
    IF !ISDIGIT(SUBSTRC(FIELDNAME,I,1))
      repl bz with "不包含数字!"  
    ENDIF
ENDFOR
use

hkjtzz的值是a中123456A中,运行后bz的值是"不包含数字!" ,不知代码错在哪了?
搜索更多相关主题的帖子: 数字 
2012-05-07 06:39
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:4 
变量FIELDNAME的值大概是“123456A”,在前6次循环中没有对表进行任何操作(因为不符合不是数字的条件),在第7次操作中取得变量中的值是“A”,当然符合IF判断的内容,所以执行了REPL语句,bz的值当然就是“不包含数字”啰。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-05-07 07:07
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
看了楼主的另外一个贴子才明白楼主的需求。建议楼主以后不要重复发贴问同一问题,浪费自己和别人的时间。
将代码作如下修改,应该可以解决问题:
set talk off
use aaa
store hkjtzz to FIELDNAME
FOR I=1 TO LEN(FIELDNAME)
    IF ISDIGIT(SUBSTRC(FIELDNAME,I,1))
        repl bz with "" &&或者为repl bz with "包含数字"
        exit
    ENDIF
    repl bz with "不包含数字!"  
ENDFOR
use

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-05-07 07:14
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
其实楼主的这段程序只要画一个流程图就很容易明白是错在哪儿的。现在面向对象的编程,可能很少有人会去画流程图了。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-05-07 07:18
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:6 
回复 楼主 smart921
set talk off
use aaa
CSTR="" &&用于保存字段中的数字
SCAN
     FOR I=1 TO LEN(hkjtzz)
         IF ISDIGIT(SUBSTRC(hkjtzz,I,1))
            CSTR=CSTR+SUBSTRC(hkjtzz,I,1) &&将数字保存在CSTR中
            EXIT &&只要字段中含有数字,就退出FOR ENDFOR循环
         ENDIF
     ENDFOR
     IF LEN(CSTR)=0
        repl bz with "不包含数字!"
     ENDFOR
     CSTR=""
ENDSCAN

use

从你的代码看,应该是判断表中字段(hkjtzz)的记录中是否不包含数字,如果保证代码正确执行,应该进行如上修改。

如果想使代码精练,可以参考下帖:
https://bbs.bccn.net/thread-366911-1-1.html
程序代码:
SET TALK OFF
USE AAA
SCAN
     If Len(ALLTRIM(hkjtzz)) = Len(Chrtran(ALLTRIM(hkjtzz),'0123456789',''))
        repl bz with "不包含数字!"
     ELSE
        repl bz with "包含数字!"
     Endif
ENDSCAN
USE


这个问题可以延伸为,变量中是否包含单字节双字节字符

[ 本帖最后由 sdta 于 2012-5-7 13:29 编辑 ]

坚守VFP最后的阵地
2012-05-07 09:25
快速回复:请高手指教这段代码错在哪?
数据加载中...
 
   



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

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