如何在Delphi中用代码来完成计算字段的创建

Delphi教程 2025-07-29

以前CSDN上有好多人问过这个问题,但是好象没有人给出满意的答案。我也是经过好长时间摸索才找到答案,现在在这给大家分享:

PRocedureTForm1.FormCreate(Sender:TObject);

var

NewField:TField;

i:integer;

begin

//表中有两字段SName,Birth,现在我们动态生成一个计算字段Age,显示出年龄

NewField:=TStringField.Create(ADOTable);

//创建一个TStringField类型的字段

ADOTable.Close;

fori:=0toADOTable.Fields.Count-1do

ADOTable.Fields[0].Free;//释放所有的静态字段

fori:=0toADOTable.FieldDefs.Count-1do

ADOTable.FieldDefs.Items[i].CreateField(ADOTable);

//根据FieldDefs的字段信息动态的生成静态字段

NewField.Size:=5;

NewField.FieldName:='Age';

NewField.FieldKind:=fkCalculated;

//设置这个这字段为计算字段

NewField.DataSet:=ADOTable;

//把这个字段加到ADOTable上

ADOTable.Open;

end;

procedureTForm1.ADOTableCalcFields(DataSet:TDataSet);

var

YY1,YY2,MM,DD:Word;

TmpDate:TDate;

begin

DecodeDate(Date,YY1,MM,DD);

TmpDate:=DataSet.FieldByName('Birth').AsDateTime;

DecodeDate(TmpDate,YY2,MM,DD);

DataSet.FieldByName('Age').AsString:=IntToStr(YY1-YY2)+'岁';

//在OnCalField中显示出年龄

end;

以上是我用ADO写的。一开始我用BDE写的,也一样都可以通过.

作者Blog:http://blog.c**sd*n.net/blazingfire/