大家看看这段很简单的代码,为什么运行得不出结果(37分)

  • 主题发起人 主题发起人 delphifoxforeve
  • 开始时间 开始时间
D

delphifoxforeve

Unregistered / Unconfirmed
GUEST, unregistred user!
var
a,b,c:variant;
begin
a:=table2.fieldbyname('故障机械').value+table1.fieldbyname('故障电器').value+table1.fieldbyname('故障其他').Value ;
b:=table2.fieldbyname('故障外无浆').value+table1.fieldbyname('故障外无水').value+ table1.fieldbyname('故障外停电').value+ table1.fieldbyname('故障外停汽').value+table1.fieldbyname('故障外换网').value+table1.fieldbyname('故障外换毛巾').value+table1.fieldbyname('故障外其他').value;
c:=table2.fieldbyname('运行计划台时').value;
table2.fieldbyname('故障停歇次数').value:=b;
table2.FieldByName('实际运行台时').value:=24*30-a-b;
table2.FieldByName('利用率').value:=(24*30-a-b)/c;
table2.FieldByName('停机率').value:=(a+b)/c;
table2.FieldByName('故障率').value:=a/c;
 
你自己单步调试呀
 
variant这个是什么啊,VARINT吗?
 
var
a,b,c:variant;

我认为是类型不对
 
你使用变体variant数据类型, 显得很混乱, 仔细查查数据类型.
比如:table2.fieldbyname('故障停歇次数').value:=b;
数据库中的 '故障停歇次数' 的类型与b是否一致呢

或者给出错误提示
 
TO:randyamis 和wnjer,你们两个说的都很对,就是类型不对,可以给我调一下类型吗/我试了INTEGER和别的都不行,请两位高手指点迷津,怎么样修改才能得出结果
 
应该用实型:
var
a,b,c:real;
 
你这样写程序会累死人的!!!!
 
事实上
var
a,b,c:variant;
这样定义也是可以的.
问题在于你的表里到底是什么类型,它们几个到底能不能相加.
 
jianguobu说的有理,variant可以用,关键要看等号后的数值类型能否具有可加性!
字符和数字就不能加!
顺便小问一句,janguobu 大哥分涨的好快啊,高手!能否将qq告诉俺,也好让俺多请教
请教啊...
 
楼上的大哥们都说完了[:)]
 
blyb:用实型提示类型转换错误
liyouweiok:那你说说应该定义为什么类型才能进行各种运算
 
谢谢以上几位,你们的建议让我MAO SE DUN KAI,谢谢各位,我的问题发现症解了,我定义的表中的那几个虚字段,定义时把类型设为INT,改为FLOAT就可以了,再次谢谢各位,尤其是wnjer、jianguobu和liyouweiok三位。记着以后多多帮帮小弟
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
623
import
I
后退
顶部