我发现这个代码在某个地方为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字段添加到从第一个代码片段派生的查询中?
答案 0 :(得分:3)
我认为你可以轻松实现这一目标的唯一方法是在IDE中创建一组持久性TField(或者在打开数据集之前在代码中创建它们)。否则,当您在数据集上调用Open时,IIRC将调用BindFields并且 - 除非数据集已经有一组TFields - 将创建一组动态TFields,只要数据集打开就会持续,但不包括任何计算字段。
当BindFields被调用时,再添加已经太晚了,所以你必须事先设置它们或者根本不设置它们。