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

  • 主题发起人 主题发起人 wangny
  • 开始时间 开始时间
回复394558739,数据库中直接写入是有小数点的,但另一个测试用的数据库一样是NUMBER型的,用同样的代码就可以写入呢?
 
回复jettop, 你用的方法不行,出现同样的错误
 
回答:wangny
你编写代码无错的,错是错在数据表里的number,因为它只支持10位数值,10位后会变成E+*的,将number改为A吧,A可支持10位以上的数值,还支持小数点,便也支持中文字,为了防止在edit1.text输入的是数字而不是其它字符,必须在edit1.text输入时进行防止输入的是数字代码编写.
 
回复394558739,现在焦点集中在为什么两个相同的代码,一个会出错而另一个不会出错

在前面的回复中我已有提到这个问题了……实在是不解
都是NUMBER型的,一个可以写入,一个写入就是会出错
 
你填写的数值是否相同,数据表是否相同,数据表的列宽是否相同
你原来的程序中代码是否定义了Integer,而在你后来没试的程序里却无定义.
 
回复394558739,后面的测试程序和前面的一样,数据库定义一样,
今天把所有的代码去掉,再重写(几乎复制)一下,其实是一样的,结果没有出错!怪!!!
 
table1.FieldByName('注册资本').value :=trim(edit1.Text);
 
可以尝试用asinteger,asstring,value试试,这个问题我以前也碰到过,很怪的,不过我用的是MSSQL。如果都不行的话,那就把这条语句拆成2条应该就可以了
i:integer;
showmessage(edit1.Text);
i:=strtoint(trim(edit1.Text));
table1.FieldByName('注册资本').asinteger:=i;
 
以前我也出现过这样的问题,我想主要是你修改了数据库中这个表的字段属性,但没有把table1这个控件的集没有重新刷新,而引起的. 我建议你重新把table1的数据源和表重新连一下就可以了.
 
这种情况(重做一个表就可以)要看看语句之前的代码,很可能是错误的内存操作引起的
 
回复ae1854:现在看来,也许是你说的这种原因,现在代码不会出错了。谢谢大家。但现在不知道分数如何分配了……
 
乍没人出个主意?分数是少了点,下次兄弟我提问再多点分数,不好意思了……
 
几日不来,分数只能这样分配,上面两位兄弟回答最多的。
 

Similar threads

后退
顶部