query1.SQL.Clear;
query1.SQL.Add('update gz.dbf set 补贴='+floattostr(round(form2.query1.Fields[3].AsFloat)));
query1.ExecSQL;"补贴" 是数据库中的一个字段名. "round"是一个函数.功能是对某个字段计算.
数据库是foxpro

解决方案 »

  1.   

    超出边界了,下标是从0开始的,可能是fields[2]!
      

  2.   

    下标是从0开始
    看看你得query是不是只有三个字段如果那样的话fields[3]就有可能出现那样的运行期间错误了
      

  3.   

    不是字段问题,表中有10个字段.
    另外:若把form2.query1.Fields[3].AsFloat改成常数,比如"3.23",则程序正常运行.
    难道是这里不能用参数?
      

  4.   

    定义一个变量如:
    var 
    sqlstr:string;

    sqlstr:='update gz.dbf set 补贴=';
    sqlstr:=sqlstr+#+floattostr(round(form2.query1.Fields[3].AsFloat))+#;
    query1.SQL.Clear;
    query1.SQL.Add(sqlstr);
    query1.ExecSQL;
      

  5.   

    还是用
    form2.query1.FieldByName('查询字段').AsFloat
      

  6.   

    在DELPHI里很多时候,出错提示是错的,只是说明程序有地方错了。将DATABASE里的属性ENABLE BCD=True,将float型的字段置为TBCD型,就可以了。
      

  7.   

    “list index out of bounds(3);”看看这个错误,应该不会是函数与设置的问题,问题估计出现在数据查询的字段中,你再检查一下按顺序来看,第四个(Fields[3])字段是否为实数。我个人的观点是,在用到字段变量时,一般最好用字段名,这样可确保正确,而用序号可能会出现你想不到错误。假设你要用到的字段名为theField,修改程序为:...floattostr(round(form2.query1.FieldByName('theField').AsFloat...再看看