请问,怎么在TADOQUERY中动态生成一个计算字段?

解决方案 »

  1.   

    你希望的是不是类似这样的显示方式:单价   数量    总价
    200      1      200
    100      3      300如果是,可以这样:
    begin
      with ADOQuery1 do
      begin
        close;
        sql.clear;
        sql.test := 'select 单价,数量,单价*数量 as 总价 from '+你的表名+'';
        open;
      end;
    end;
      

  2.   

    1.我记得TADOQUERY可以直接指定字段的,你可以在TADOQUERY中加一列,字段为A+B试试,但这种方法比较容易出错,而且不灵活2.可以建个临时表,再用Alter Table 增加字段,为什么用临时表呢,因为不能破坏原来的表结构了。这种方法对数据很安全,但如果要更改数据库只能通过SQL语句。
      

  3.   

    同意hatum(hatum)的写法,简单的查询可以用
      

  4.   

    你可以直接用query执行一个sql来动态创建一个表呀.
    例如: select a as "",b as "",c as "" from tablename where a = ''
    这样就可以在query中动态产生一个你想要的表
    只要字段的类型和你想要的表中的字段类型一致就可以了.
    然后你想这个query中添加数据就可以了.
      

  5.   

    http://tech.acnow.net/Html/Program/Delphi/DelphiSYS/2006-9/7/164136745.shtml
      

  6.   

    OK,我的EMAIL :[email protected]
      

  7.   

    procedure BuildCalcField;
    var
      i : Integer;
      Field : TField;
    begin
      DataSet.FieldDefs.Update;
      for i := 0 to DataSet.FieldDefs.Count -1 do
      begin
        Field := DataSet.FieldDefs.Items[i].FieldClass.Create(DataSet);
        Field.FieldName := DataSet.FieldDefs.Items[i].Name;
        Field.FieldKind := fkData;
        Field.Size := DataSet.FieldDefs.Items[i].Size;
        Field.DataSet := DataSet;
      end;  Field := TFloatField.Create(DataSet);
      Field.FieldName := 'TotalMoney';
      Field.FieldKind := fkCalculated;
      Field.DataSet := DataSet;
    end;关键点是必须先为数据集现有的字段建立固定字段对象,运行时运态创建