你希望的是不是类似这样的显示方式:单价 数量 总价 200 1 200 100 3 300如果是,可以这样: begin with ADOQuery1 do begin close; sql.clear; sql.test := 'select 单价,数量,单价*数量 as 总价 from '+你的表名+''; open; end; end;
你可以直接用query执行一个sql来动态创建一个表呀. 例如: select a as "",b as "",c as "" from tablename where a = '' 这样就可以在query中动态产生一个你想要的表 只要字段的类型和你想要的表中的字段类型一致就可以了. 然后你想这个query中添加数据就可以了.
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;关键点是必须先为数据集现有的字段建立固定字段对象,运行时运态创建
200 1 200
100 3 300如果是,可以这样:
begin
with ADOQuery1 do
begin
close;
sql.clear;
sql.test := 'select 单价,数量,单价*数量 as 总价 from '+你的表名+'';
open;
end;
end;
例如: select a as "",b as "",c as "" from tablename where a = ''
这样就可以在query中动态产生一个你想要的表
只要字段的类型和你想要的表中的字段类型一致就可以了.
然后你想这个query中添加数据就可以了.
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;关键点是必须先为数据集现有的字段建立固定字段对象,运行时运态创建