| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1094 人关注过本帖
标题:等级替换的代码错在哪里
取消只看楼主 加入收藏
glygly06
Rank: 1
来 自:雁城
等 级:新手上路
威 望:1
帖 子:120
专家分:0
注 册:2008-10-1
结帖率:50%
收藏
 问题点数:0 回复次数:5 
等级替换的代码错在哪里
帮我看看代码错在哪里:
表 djfz.dbf
字段:k1,k2,k3,k4,k5(存放各科等级:A、B、C、D、E五等),dj(把k1-k5的等级合并),djfz(对dj字段的等级进行分析,如 ABCDE ,替换成 1A1B1C1D)

close all
use djhz alias djhz
repl all dj with k1+k2+k3+k4+k5
zs=recc()
cdu=len(allt(dj))
aa=0
bb=0
cc=0
dd=0
ee=0

for i=1 to zs
  go i
    for j=1 to cdu
       do case
          case substr(allt(dj),j,1)='A'
               aa=aa+1
          case substr(allt(dj),j,1)='B'
               bb=bb+1
          case substr(allt(dj),j,1)='C'
              cc=cc+1
          case substr(allt(dj),j,1)='D'
              dd=dd+1
          case substr(allt(dj),j,1)='E'
              ee=ee+1
       endcase
    endfor
   repl djhz with allt(str(aa))+'A'+allt(str(bb))+'B'+allt(str(cc))+'C'+allt(str(dd))+'D'+allt(str(ee))+'E'
endfor
搜索更多相关主题的帖子: 等级 代码 
2008-10-29 16:33
glygly06
Rank: 1
来 自:雁城
等 级:新手上路
威 望:1
帖 子:120
专家分:0
注 册:2008-10-1
收藏
得分:0 
我替换的结果都是  0A0B0C0D0E
是不是 do case 语句没有执行?

[[it] 本帖最后由 glygly06 于 2008-10-29 17:28 编辑 [/it]]

我是一只小小小菜鸟,我想装懂却又懂不了多少

2008-10-29 16:34
glygly06
Rank: 1
来 自:雁城
等 级:新手上路
威 望:1
帖 子:120
专家分:0
注 册:2008-10-1
收藏
得分:0 
谢谢,问题解决了。我还对程序进行了进一步完善,表中取消了 dj字段,直接替换到 djfz 字段,并对没有出现的等级不进行统计,如“0A2B1C2D0E”替换成“2B1C2D”。下面是我修改后的代码,当然,我感觉到这些代码还不是最精简的。

我是一只小小小菜鸟,我想装懂却又懂不了多少

2008-10-29 22:17
glygly06
Rank: 1
来 自:雁城
等 级:新手上路
威 望:1
帖 子:120
专家分:0
注 册:2008-10-1
收藏
得分:0 
close all
use djhz alias djhz
zs=recc()

for i=1 to zs
  go i
  dja=k1+k2+k3+k4+k5
 aa=0
bb=0
cc=0
dd=0
ee=0
cdu=len(allt(dja))
   for j=1 to cdu
     if  substr(allt(dja),j,1)='A'
       aa=aa+1
       endif
     if  substr(allt(dja),j,1)='B'
       bb=bb+1
       endif
     if  substr(allt(dja),j,1)='C'
       cc=cc+1
       endif
        if  substr(allt(dja),j,1)='D'
       dd=dd+1
       endif
        if  substr(allt(dja),j,1)='E'
       ee=ee+1
       endif
    endfor
    djhza=allt(str(aa))+'A'+allt(str(bb))+'B'+allt(str(cc))+'C'+allt(str(dd))+'D'+allt(str(ee))+'E'
   qa=substr(allt(djhza),1,2)
   if qa='0A'
      qa=''
   endif
   qb=substr(allt(djhza),3,2)
   if qb='0B'
      qb=''
   endif
   qc=substr(allt(djhza),5,2)
   if qc='0C'
      qc=''
   endif
   qd=substr(allt(djhza),7,2)
   if qd='0D'
      qd=''
   endif
   qe=substr(allt(djhza),9,2)
   if qe='0E'
      qe=''
   endif
   repl djhz with qa+qb+qc+qd+qe
endfor

我是一只小小小菜鸟,我想装懂却又懂不了多少

2008-10-29 22:21
glygly06
Rank: 1
来 自:雁城
等 级:新手上路
威 望:1
帖 子:120
专家分:0
注 册:2008-10-1
收藏
得分:0 

我是一只小小小菜鸟,我想装懂却又懂不了多少

2008-10-29 22:32
glygly06
Rank: 1
来 自:雁城
等 级:新手上路
威 望:1
帖 子:120
专家分:0
注 册:2008-10-1
收藏
得分:0 
谢谢版主对程序的优化,又使我尝到了OCCURS()函数。我学VFP可就是一本很简单的教材。

我是一只小小小菜鸟,我想装懂却又懂不了多少

2008-10-30 09:17
快速回复:等级替换的代码错在哪里
数据加载中...
 
   



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

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