将calcfield添加到TQuery

时间:2015-08-19 15:34:50

标签: sql delphi

我发现这个代码在某个地方为Delphi中的TADOTable创建了一个calc字段......

    .....
    procedure TfrmMain.ABSTable1CalcFields(DataSet: TDataSet);
    begin
      with ABSTable1 do
       FieldByName('cost').AsFloat := FieldByName('price').AsFloat *
                                      FieldByName('quantity').AsInteger;
       //  add new field cost as Price * quantity  !!!!
    end;

    end.

在我的应用程序中,我在朗姆酒时间创建一个TADOQuery,如

  try
    Fquery.sql.clear;
    Fquery.sql.AddStrings(Amemo.lines);
    Fquery.Open;

    .....    
  finally

  end;

如何将更多的calc字段添加到从第一个代码片段派生的查询中?

1 个答案:

答案 0 :(得分:3)

我认为你可以轻松实现这一目标的唯一方法是在IDE中创建一组持久性TField(或者在打开数据集之前在代码中创建它们)。否则,当您在数据集上调用Open时,IIRC将调用BindFields并且 - 除非数据集已经有一组TFields - 将创建一组动态TFields,只要数据集打开就会持续,但包括任何计算字段。

当BindFields被调用时,再添加已经太晚了,所以你必须事先设置它们或者根本不设置它们。