标题:请教高手这段代码哪里有错,怎么运行后提示“数据类型不匹配”?
只看楼主
smart921
Rank: 1
等 级:新手上路
帖 子:107
专家分:9
注 册:2010-8-8
结帖率:86.96%
已结贴  问题点数:10 回复次数:13 
请教高手这段代码哪里有错,怎么运行后提示“数据类型不匹配”?
a=alltrim(thisform.Text1.value)
b=alltrim(thisform.Text2.value)
c=alltrim(thisform.Text3.value)
d=alltrim(thisform.Text4.value)
e=alltrim(thisform.Text5.value)
f=alltrim()
g=alltrim(thisform.Text7.value)
h=alltrim(thisform.Text8.value)
if empty(a) &&此条件成立则说明该文本框是空的
   messagebox("请输入手册编号!",16,"系统提示")
   return
else
  locate for aac001=a
  if .not.eof() &&此条件成立,说明要添加的内容和表中有重复的
      go top
      messagebox("手册编号不允许有重复!",16,"系统提示")
      thisform.Text1.setfocus
      return
  endif
endif
if empty(b)
   messagebox("请输入失业编号!",16,"系统提示")
   return
else
  locate for syzh=b
  if .not.eof()
      go top
      messagebox("失业编号不允许有重复!",16,"系统提示")
      thisform.Text1.setfocus
      return
  endif
endif
if empty(c)
   messagebox("请输入姓名!",16,"系统提示")
   return
endif
if empty(d)
   messagebox("请输入身份证号!",16,"系统提示")
   return
else
  locate for alltri(sfzh)=alltri(d)
  if .not.eof()
      go top
      messagebox("身份证号不允许有重复!",16,"系统提示")
      thisform.Text1.setfocus
      return
   endif
endif
if empty(e)
   messagebox("请输入异动时间!",16,"系统提示")
   return
endif
if empty(f)
   messagebox("请选择异动标志!",16,"系统提示")
   return
endif
if val(thisform.Text7.value)=0.and.val(thisform.Text8.value)=0
   messagebox("请输入上半年或下半年失业基数!",16,"系统提示")
   return
endif
msg=messagebox('确定要添加记录吗?',32+4,'系统提示')
if msg=6
append blank
go bottom
replace aac001 with alltrim(thisform.Text1.value),;
syzh with alltrim(thisform.Text2.value),;
xm with alltrim(thisform.Text3.value),;
sfzh with alltrim(thisform.Text4.value),;
ydsj with ctod(substr(alltrim(thisform.Text5.value),6,2)+"/"+right(alltrim(thisform.Text5.value),2)+"/"+left(alltrim(thisform.Text5.value),4)),;
ydbz with alltrim(),;
syjs with val(thisform.Text7.value),;
syjs1 with val(thisform.Text8.value),;
dwmc with "****公司",;
dwbh with "32020011035451",;
nian with year(date()),;
yue with month(ydsj),;
xh with recn()
messagebox('保存记录成功!',64,'系统提示')
thisform.Text1.value=""
thisform.Text2.value=""
thisform.Text3.value=""
thisform.Text4.value=""
thisform.Text5.value=""
thisform.Text7.value=""
thisform.Text8.value=""

thisform.refresh
endif
运行后提示标红部分有错,提示“数据类型不匹配”,但数据库中已保存成功。
搜索更多相关主题的帖子: 手册 文本框 
2011-11-16 09:19
apple0072011
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:249
专家分:989
注 册:2011-8-17
得分:10 
“运行后提示标红部分有错,提示“数据类型不匹配”,但数据库中已保存成功。 ”  看看哪一个字段没有更新,特别是日期型字段

天道酬勤
2011-11-16 09:30
smart921
Rank: 1
等 级:新手上路
帖 子:107
专家分:9
注 册:2010-8-8
得分:0 
回复 2楼 apple0072011
ydsj字段变过来了,没错啊!
2011-11-16 09:33
apple0072011
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:249
专家分:989
注 册:2011-8-17
得分:0 
把你的表发上来看一下

天道酬勤
2011-11-16 09:39
apple0072011
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:249
专家分:989
注 册:2011-8-17
得分:0 
nian yue xh 的数据类型是什么

天道酬勤
2011-11-16 09:43
smart921
Rank: 1
等 级:新手上路
帖 子:107
专家分:9
注 册:2010-8-8
得分:0 
回复 5楼 apple0072011
nian、yue、xh 是数字型字段.
2011-11-16 09:52
smart921
Rank: 1
等 级:新手上路
帖 子:107
专家分:9
注 册:2010-8-8
得分:0 
回复 6楼 smart921
由于自己粗心导致的,xh是字符型。
2011-11-16 09:55
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
有时间反复问及猜,都可以把那些代码拆成逐行REPLACE发现哪个字段出问题了。写代码的习惯,全挤在一行难以DEBUG,这经验总也归纳不出来?

授人以渔,不授人以鱼。
2011-11-16 09:57
apple0072011
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:249
专家分:989
注 册:2011-8-17
得分:0 
TonyDeng 先生一语中的啊

天道酬勤
2011-11-16 10:05
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
楼主的这段代码,冗余量太多。前面已经得到若干alltrim()后的临时变量,用那些数据去replace即可,到后面又alltrim()一次,做多了事。更可怕的是,xh似乎是关键字段,竟然完全没有意识它的数据类型是什么(正当的确应是字符型,但recno()为整数这是写出来就应知道的)——用记录号作序号很容易出问题,这点这个数据库的设计者恐怕没意识了。

授人以渔,不授人以鱼。
2011-11-16 10:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-355376-1-1.html




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

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