procedure TForm1.Button5Click(Sender: TObject);
var
ts1:integer;
ts2:integer;
nfen1:integer;
nfen2:integer;begin
  nfen2:=adotable1.fieldbyname('zongfen').asinteger;
 adoquery1.Close;
 adoquery1.SQL.Clear;
 adoquery1.sql.add('select sum(feng) as nfen1 from f_leixin');
  if  nfen1<>nfen2   then begin
 application.MessageBox('定议的总题分不等于确定的类型分,请检查','检查');
  end;
      end;
end.为什么执行后,总是提示“不等于确定的类型分”,一查才知道SUM求和的值nfen2与实际不符,总是431267 ,为什么啊????

解决方案 »

  1.   

    begin
      nfen2:=adotable1.fieldbyname('zongfen').asinteger;
     adoquery1.Close;
     adoquery1.SQL.Clear;
     adoquery1.sql.add('select sum(feng) as nfen1 from f_leixin');
     adoquery1.sql.open;
     adoquery1.execute;
      if  nfen1<>nfen2   then begin
     application.MessageBox('定议的总题分不等于确定的类型分,请检查','检查');
      end;
          end;
    end.
      

  2.   

    procedure TForm1.Button5Click(Sender: TObject);
    var
        ts1,ts2,nfen1,nfen2:integer;
    begin
        nfen2:=adotable1.fieldbyname('zongfen').asinteger;    adoquery1.Close;
        adoquery1.SQL.Clear;
        adoquery1.sql.add('select sum(feng) as nfen1 from f_leixin');
        adoquery1.sql.open;    nfen1 : =adoquery1.fieldbyname('nfen1').asinteger;    if nfen1<>nfen2 then
           application.MessageBox('定议的总题分不等于确定的类型分,请检查','检查');
    end;
      

  3.   

    if  adoquery1.fieldbyname('nfen1').value<>nfen2   then begin
      

  4.   

    if  nfen1<>nfen2   then begin
    应该是adoquery1.fieldbyname('nfen1').asinteger<>nfen2 then
    ....
      

  5.   

    为什么第一次执行可以。但是我在DBGRID里面输入新的数据后还是老样子,提示的内容是一样的。好像nfen1的值没有变化啊。从DBGRID里面输入的新值,传不到ADOQUERY里面
      

  6.   

    nfen1的值是0,也许第一次取的nfen2的值也是0,
    同意espp(浴室巨鲸) 等人说的
      

  7.   

    我是说我在DBGRID里面输入新的数据,进行计算后,ADOQUERY1查询统计的值未变。
      

  8.   

    怀疑你的数据库语句有问题。‘select sum()as nfen1 from ..’是将数据存在数据库中nfen1变量中,并没有写入到delphi中你定义的变量中。需要将该值从数据库中读出。我同意 jinfengok(砸锅卖铁来上网) 的方法,即nfen1:=adoquery1.fileds[0].asstring;
      

  9.   

    procedure TForm1.Button5Click(Sender: TObject);
    var
        ts1,ts2,nfen1,nfen2:integer;
    begin
        nfen2:=adotable1.fieldbyname('zongfen').asinteger;
        adoquery1.Close;
        adoquery1.SQL.Clear;
        adoquery1.sql.add('select sum(feng) as nfen1 from f_leixin');
      try
        adoquery1.sql.open;
        nfen1 : =adoquery1.fieldbyname('nfen1').asinteger;
        if nfen1<>nfen2 then
           application.MessageBox('定议的总题分不等于确定的类型分,请检查','检查');
      except
        //异常信息
      end;
    end;
      

  10.   

    我知道是怎么回事了原来,我在DBGRID里面输入的数据,如果不移动光标到下一条记录的话,直接关闭表单后;数据表里面就没有新录入的数据,如果在输入新数据后,按回车后数据表里面就有数据了。如何不按回车,用代码控制或改属性控制急急????