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

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

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

procedure TForm1.FormCreate(Sender: TObject);

var

NewField:TField;

i:integer;

begin

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

NewField:=TStringField.Create(ADOTable);

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

ADOTable.Close;

for i:=0 to ADOTable.Fields.Count-1 do

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

for i:=0 to ADOTable.FieldDefs.Count-1 do

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

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

NewField.Size:=5;

NewField.FieldName:='Age';

NewField.FieldKind:=fkCalculated;

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

NewField.DataSet:=ADOTable;

//把这个字段加到ADOTable上

ADOTable.Open;

end;

procedure TForm1.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写的,也一样都可以通过.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航