| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1094 人关注过本帖
标题:等级替换的代码错在哪里
只看楼主 加入收藏
glygly06
Rank: 1
来 自:雁城
等 级:新手上路
威 望:1
帖 子:120
专家分:0
注 册:2008-10-1
结帖率:50%
收藏
 问题点数:0 回复次数:8 
等级替换的代码错在哪里
帮我看看代码错在哪里:
表 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
潇洒人间一剑仙
Rank: 2
等 级:论坛游民
威 望:1
帖 子:140
专家分:48
注 册:2008-9-19
收藏
得分:0 
把cdu=len(allt(dj))放在for j=1 to cdu前面
2008-10-29 18:40
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
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
close all
use djhz
repl all djfz with getclass(UPPER(k1+k2+k3+k4+k5))

FUNCTION getclass
LPARAMETERS cStr
LOCAL nA,nB,nC,nD,nE
nA=OCCURS('A',cStr)
nB=OCCURS('B',cStr)
nC=OCCURS('C',cStr)
nD=OCCURS('D',cStr)
nE=OCCURS('E',cStr)
RETURN IIF(nA=0,'',STR(nA,1)+'A')+IIF(nB=0,'',STR(nB,1)+'B')+IIF(nC=0,'',STR(nC,1)+'C')+IIF(nD=0,'',STR(nD,1)+'D')+IIF(nE=0,'',STR(nE,1)+'E')

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2008-10-29 23:55
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
CLOSE ALL
USE djhz
SCAN
  cStr=UPPER(k1+k2+k3+k4+k5)
  nA=OCCURS('A',cStr)
  nB=OCCURS('B',cStr)
  nC=OCCURS('C',cStr)
  nD=OCCURS('D',cStr)
  nE=OCCURS('E',cStr)
  REPLACE djfz WITH IIF(nA=0,'',STR(nA,1)+'A')+IIF(nB=0,'',STR(nB,1)+'B')+IIF(nC=0,'',STR(nC,1)+'C')+IIF(nD=0,'',STR(nD,1)+'D')+IIF(nE=0,'',STR(nE,1)+'E')
ENDSCAN

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2008-10-30 00:01
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.023954 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved