delphi "从数据类型varchar转换为numeric时出错"

相关代码如下:adoquery1.Close;adoquery1.SQL.Clear;adoquery1.SQL.Add('insertinto挂号记录(流水账号,收费日... 相关代码如下:
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into 挂号记录(流水账号,收费日期,病人姓名,性别,科室,挂号类别,接诊医师,应收金额)values('''+label5.Caption+''','''+label3.Caption+''','''+edit1.Text+''','''+combobox1.Text+''','''+combobox2.Text+''','''+combobox3.Text+''','''+combobox4.Text+''','''+label13.Caption+''')');
adoquery1.ExecSQL;

应该是粗现在“应收金额”那块的错误吧,lebel里面要放进去的数据是整数或者是小数(来源是float),添加的数据库“应收金额“类型也是float。运行出现 "从数据类型varchar转换为numeric时出错”。新手求教!!!
展开
 我来答
mischemeXL
2015-05-29 · TA获得超过280个赞
知道小有建树答主
回答量:263
采纳率:0%
帮助的人:166万
展开全部
首先这个问题涉及到ADO编程。
既然你使用了TADOQUERY控件。说明你应该对这方面有一些了解了。
下面我会和你说下调试的方法和问题出现的原因以及解决方案。
1.调试
当你在adoquery1.ExecSQL;这句设置断点,即鼠标停留在该行,按下F5。
右击选择菜单Debug-Evaluate/Modify弹出对话框,在Expression输入adoquery1.sql.text按下回车
Result将显示该数据的内容。你将得到一条完整的数据库操作语句。
复制该SQL语句,到查询分析器或者PL/SQL中执行。将得到错误原因。
2. 原因
由于你的插入语句使用的是含有引号的值,根据标准SQL语法,理解为字符数组。而你数据库中的表字段是数字类型的。由于数据类型不相符。数据库报错。错误原因即你题目中写到的。
3.解决方案
将SQL语句修改一下,或者修改数据库中的表字段结构。(一般情况表结构不会轻易变动,除非是设计时不合理)
4.优化
关于SQL的优化方案有很多类型。例如你题目中的写法,运行时准确性可以保证,但是效率可以提高。比如将sql的拼写使用绑定变量方式。如果批量使用该语句时,可以多条一起提交。优化的原理是利用数据库自带的缓存,提高效率。
另外,表在设计时竟可能不要使用中文。控件名称多使用一些有意义的变量名。比如InsertQuery,Date,Account.
祝你在使用中得到更快的技术提升。同时代码有很好的可读性。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式