| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 603 人关注过本帖
标题:求助~~判断两次成绩~~~
取消只看楼主 加入收藏
kingfox1
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-12-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
求助~~判断两次成绩~~~
要求:判断同一人每一科的两次成绩,取最好成绩(等第分为A、B、C、D、Y、N、-、空,其中-和空均为缺考),然后根据两次考试人数输出一个人数最全的总表(因为有可能有人只参加了一次考试)。两个库内均有ckjh这个字段,这是学生考号,考号唯一,并且两次考试同一人的考号相同。

已经完成:能输出人数最全的总表

现在的问题:输出的“更新后”这个库的成绩与sele 1的相同,也就是说判断两次成绩哪个最好的那段不对头。。。

谢谢各位,早上又看了半天,终于发现了,其实是小问题,就是判断完第一个科之后没有返回sele 2,结果造成除第一科外的其余科目都是在sele 1中反复提取。。。
把do case下面的语句变成
  endcase
  repl &dd with ddb   这句变到encase下边了
  SELE 2              加了这个就OK了
   endfor
endif
endscan


代码如下:
set talk off
clea all
sele 2
use 第一次 alias hk
sele 1
use 第二次 alias hg
kjh=""
scan
kjh=ckjh
sele 2
loca for ckjh=kjh
if not eof()
 for i=1 to 18  
  dd="dd"+allt(str(i))
  dda=&dd
  sele 1
  do case
    case ddb="A"
       ddb=ddb
    case ddb="B" and dda="A"
       ddb=dda
    case ddb="C" and (dda="A" or dda="B")
       ddb=dda
    case ddb="D" and (dda="A" or dda="B" or dda="C")
       ddb=dda
    case ddb="Y" and (dda="A" or dda="B" or dda="C")
       ddb=dda
    case (ddb="N" or ddb="-" or ddb=" ") and (dda="A" or dda="B" or dda="C" or dda="Y")
       ddb=dda
  repl &dd with ddb
  endcase
 endfor
endif
endscan
sele 2
go top
scan
kjh=ckjh
sele 1
loca for ckjh=kjh
if eof()
 sele 2
 dele
else
 sele 2
endif
endscan
copy to bhg for dele()
reca all
sele hg
copy to 更新后
use 更新后
appe from bhg
reca all
eras bhg.dbf
clea all
use 更新后
set talk on

[ 本帖最后由 kingfox1 于 2011-12-2 16:55 编辑 ]
搜索更多相关主题的帖子: 最好 
2011-12-01 20:11
kingfox1
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-12-1
收藏
得分:0 
我用的VFP6.0,估计大家用的都是9.0吧
2011-12-02 16:59
快速回复:求助~~判断两次成绩~~~
数据加载中...
 
   



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

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