您的位置:程序门 -> delphi ->



delphi+access一个计算问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


delphi+access一个计算问题
发表于:2007-10-19 16:28:12 楼主
数据库1        
字段名           公式
应发合计     adoquery1.fieldvalues['基本工资']*10000+adoquery1.fieldvalues['提成']

数据库2
姓名             基本工资       提成       应发合计
test               10                   20               0

以上数据库字段都是char和float类型

我的全部程序是这样的
var   i:integer;
s_field,s_cal:string;
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select   *   from   wage');
adoquery1.open;
adoquery2.close;
adoquery2.sql.clear;
adoquery2.sql.add('select   *   from   cal');
while   not   adoquery2.eof   do
    begin
        s_field:=adoquery2.fieldbyname('字段名').asstring;
        s_cal:=adoquery2.fieldbyname('公式').asstring;
        while   not   adoquery1.eof   do
            begin
                adoquery1.edit;
                adoquery1.fieldbyname(s_field).value:=s_cal;
                adoquery1.updaterecord;
                adoquery1.next;
            end;
        adoquery2.next;
    end;
showmessage('成功');
end;

错误提示:
'adoquery1.fieldvalues['基本工资']*10000+adoquery1.fieldvalues['提成']'is   not   a   valid   floating   point   value

一共2个数据库     大哥们能看懂什么意思吗?
请大家帮帮忙!!!谢谢谢谢!!!万分感谢!!      


还有一个小问题!
如果将光标移到memo1最后
发表于:2007-10-19 16:35:471楼 得分:0
adoquery1.fieldbyname(s_field).value:=s_cal;  
直接给个公司就会帮你算出来,你的s_cal是字符串来了,
你的这代码翻译出来是
adoquery1.fieldbyname(s_field).value:='adoquery1.fieldvalues[   '基本工资   ']*10000+adoquery1.fieldvalues[   '提成   ']';
(注意引号)
他是不等价于你要的目的:
adoquery1.fieldbyname(s_field).value:=adoquery1.fieldvalues[   '基本工资   ']*10000+adoquery1.fieldvalues[   '提成   '];

发表于:2007-10-19 19:21:442楼 得分:0
楼上大哥     谢谢解答     不过     我也试过

adoquery1.fieldbyname(s_field).value:=strtofloat(s_cal);

也不行!!


等待大家帮忙!!    
发表于:2007-10-19 21:26:403楼 得分:0
'提成   '字段中可能有null,null是不能和数相乘的
发表于:2007-10-19 22:40:454楼 得分:0
我左右的float型字段   默认值全是0     但数据库已经输入数据了


数据库2  
姓名             基本工资       提成           应发合计  
test               10               20               0  


大哥们都帮帮忙啊!!我难过死了!!


快速检索

最新资讯
热门点击