已经有一个score表,三个字段,name,math,chinese,total记录成绩和总分,想用table将计算出来的总分写回数据表.
table1.edit;
a:=table1.fieldbyname('math').asfloat;
b:=table1.fieldbyname('chinese').asfloat;
table1.fieldbyname('total').asfloat:=a+b;
table1.post;请高手看看有啥错误?怎么改?

解决方案 »

  1.   

    这样写,应该是没有错的.只是需要注意一下,你的math,chinese,total这三个字段是什么数据类型,用asfloat是否合适;另外,其实应该有效率更高的方法,使用update语句例:
    query.Close;
    query.SQL.Clear;
    query.SQL.Add('update score set total = math + chinese');
    query.ExecSQL;
      

  2.   

    (如果你实在要用Table)  偶看你的代码没错(当然,不知你是如何处理数据库记录位置的)其实你的写法可以简化一下:
    with table1 do
         begin
         edit;
         fieldbyname('total').asfloat:=fieldbyname('math').asfloat+fieldbyname('chinese').asfloat;
         post;
         end;
      

  3.   

    with table1 do
         begin
         edit;
         fieldbyname('total').asfloat:=fieldbyname('math').asfloat+fieldbyname('chinese').asfloat;
         post;
         end;
    语法和记录指针位置都没问题;就是出现下面的错误。
    出现错误:
    table1:Dataset not in edit or insert mode
      

  4.   

    这段代码好使,谢谢。
    query.Close;
    query.SQL.Clear;
    query.SQL.Add('update score set total = math + chinese');
    query.ExecSQL;
      

  5.   

    table1.fieldbyname('total').asfloat:=a+b;
    ----->>>
    table1.fieldvalues['total']:=floattostr(a+b);
      

  6.   

    with table1 do
         begin
         edit;
         fieldbyname('total').asfloat:=fieldbyname('math').asfloat+fieldbyname('chinese').asfloat;
         post;
         end;
    语法和记录指针位置都没问题;就是出现下面的错误。
    出现错误:
    table1:Dataset not in edit or insert mode-------------------------------------------------问题不是出在这段代码里...说过了,不知你的表有没有记录,有几条记录,也不知你是要处理哪一条...
      

  7.   

    个人偏向 lihuasoft 的写法
      

  8.   

    我已经先(至少有5条记录)
    Table1.first;
    table1.next;
    然后才
    with table1 do
         begin
         edit;
         fieldbyname('total').asfloat:=fieldbyname('math').asfloat+fieldbyname('chinese').asfloat;
         post;
         end;
    还是出错.
      

  9.   

    看一下上述三个字段的类型,是不是float
      

  10.   

    把Table1的属性设置成True;
    Table1.CachedUpdates:=true;