很简单的问题:query中执行带函数sql语句,比如说avg求平均值,执行后的值怎么取出啊?

解决方案 »

  1.   

    你avg的时候给字段起个别名,然后通过fieldbyname()取得
    也可以直接通过序号取得。
      

  2.   

    举例如下:
    procedure TForm2.Button3Click(Sender: TObject);begin
      with ADOQuery1 do
      begin
        close;
        sql.Clear;
        sql.Add('select xh,avg(sl) as sla  from slinfo group by xh ');
        Open;
        showmessage(FieldByName('sla').AsString);
        showmessage(Fields.Fields[1].AsString);
      end;
    end;
      

  3.   

    with query1 do
    begin
      close;
      sql.clear;
      sql.add('select avg(Price) as avg_Price  from Indepot ');
      open;
      edit1.text :=query1.fieldbyname('avg_Price').asstring;
    end;
      

  4.   

    直接filedbyname('avg(内容)')不可以吗?
      

  5.   

    select avg(ziduan) as newziduan from table
    adoquery1.fieldbyName('newziduan').asstring
      

  6.   

    这就是csdn的魅力,如果分那么好拿你们也觉得太没意思,太没技术含量了.
      

  7.   

    var
      sTmp: string;
    begin
    result := -1;
    with  TClientDataSet.Create(nil) do
      try
        sSql := 'select id,avg(nvl(money,0))as avgmoney from aaa group by id ';
        //qryData为一个专门执行查询SQL的函数
        if not qryData(sSql,vdata) then  
          raise Exception.Create('无法连接数据库,请检查网络连接!');
        Data := vdata;
        if (not Eof) then
          //取得你要的值
          sTmp := FieldByName(avgmoney ).AsString;  
      finally
        free;
      end;
      result := 0;
    end;