table1.FieldByName('注册资本').AsInteger :=strtoint(edit1.Text)的问题(50分)

  • 主题发起人 主题发起人 wangny
  • 开始时间 开始时间
回复xf-wangyi:程序调试,只要是一到
table1.FieldByName('注册资本').AsInteger :=strtoint(edit4.Text);
这一句,就一定出错,提示类型转换出错!
 
断点就下在这里啊,然后看看Edit4.text是多少
然后在Debug-Evaluate/Modify里看看StrToInt(Edit4.text)
 
你不能先把STRTOINT(EDIT.TEXT)附给一个INTEGER变量后在给数据库么
 
是不是数字越界了?比如数据库定义的是tinyint类型,输入的数字却超过了tinyint的范围
 
换成table1.FieldByName('注册资本').asstring :=strtoint(edit4.Text);试试
 
换成table1.FieldByName('注册资本').AsVariant :=trim(edit4.Text);试试
 
回复394558739:你那样做类型不匹配的。
回复looksea:你的办法试过,一样出错。
 
回复守望天使:我就是简单输入123,也会出错
 
晕,好像是个简单的问题耶
fieldbyname('注册资本'').AsString := trim(edit1.Text);
 
回复xl4772:我用的是AsInteger的。不是Asstring……

其他兄弟,我用DEBUG来跟踪,发现strtoint(edit1.text)里是数字,比如我输入的3,是数字,也就是说,3这个数字在赋值给“注册资本”这个字段时出现类型不匹配的错误信息!
按理说,NUMBER型的字段是输入数字的,但在这里就是不行!!晕倒!!!
 
用asstring 让系统自己转INTEGER应该可以。

或则 用ado控件试试。
 
楼主应该多自己测试一下,到底是哪句代码错了:
1.赋值前看一下内容
showmessage(edit1.Text);
table1.FieldByName('注册资本').AsInteger :=strtoint(edit1.Text);
2.随便给一个数字看是不是有问题:
table1.FieldByName('注册资本').AsInteger :=1;
......
方法很多,多调试调试吧。
 
将你的代码改成这样哦
TForm5.table1.Open;
TForm5.table1.Append;
TForm5.table1.FieldByName('注册资本').AsInteger :=TForm5.edit1.Text;
if (TForm5.table1.modified) then
TForm5.table1.post;
 
回复jennykiller:直接赋值居然也会出错!!
 
哎,table1.FieldByName('注册资本').AsInteger :=strtoint(edit1.Text);中的
AsInteger是整数哦(如1000或14100),而数据里的number是非正数而是数值(如100.05)
 
回复394558739,输入的是整数!如:100

自个再做个表,一样的代码操作一下,居然可以了。好怪,但原来的代码也没错,就是一直出现错误提示
 
你用Database Desktop打开你所讲的数据表看看,自己试填下数(如100),你发觉填写的数会成为100.00的,这就不是整数了,和AsInteger对应不上了.
 
table1.FieldByName('注册资本').value 用Value不要用INT。。数据库中字段要求是INT类型
 
table1.FieldByName('注册资本').asinteger := strtointDef(edit1.text,0)
 
回复394558739,数据库中直接写入是有小数点的,但另一个测试用的数据库一样是NUMBER型的,用同样的代码就可以写入呢?
 

Similar threads

后退
顶部