求助~~判断两次成绩~~~
要求:判断同一人每一科的两次成绩,取最好成绩(等第分为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 编辑 ]