vfp高手,帮帮我,看看这段程序哪里出错了,急用

来源:百度知道 编辑:UC知道 时间:2024/06/10 20:20:50
xuehao=allt(thisform.text1.value)
banji=allt(thisform.combo3.value)
kecheng=allt(thisform.combo4.value)
xueqi=allt(thisform.combo5.value)
chengji=allt(thisform.text2.value)
sele grade
if chengji==""
tt=messagebox("想输入单科成绩吗?",4+32,"提示")
if tt==6
thisform.text2.setfocus
else
endif
else
locate for allt(学号)=xuehao
if eof()
locate for allt(课程)=kecheng
if allt(学号)=="".and.allt(班级)==banji
repl 学号 with xuehao
repl 成绩 with chengji
repl 学期 with xueqi
else
append blank
repl 班级 with banji
repl 学号 with xuehao
repl 成绩 with chengji
repl 学期 with xueqi
endif
else
locate for allt(学号)=xuehao
do while found()
if allt(课程)==kecheng .and. allt(学期)==xueqi
tt=messagebox("该科的成绩已存在,是否覆盖?",4+32+256,"提示&qu

chengji=allt(thisform.text2.value)

这样取得的成绩是字符型的,如果字段中是数值型的,肯定要出错误。

改为:
chengji=val(allt(thisform.text2.value))
试试

有两种情况
第一种情况上面这位仁兄所说
这时新增一条记录得时候,text输入得是字符型,用val()转数值

第二种情况介绍如下
比如说你要修改某项记录
也就是说
thisform.text1.value=数值型字段
同时你要修改这个text保存,那么就不需要val()转字符型了
因为他原来就是数值型

你可以用这样得代码来避免这样得问题
a=thisform.text1.value
do case
case vartype(a)="N"
REPLACE 数值型字段 with a
case vartype(a)="C"
REPLACE 数值型字段 with val(alltrim(a))
endcase