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

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 blazingfire 的 blog

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

本文关键:字段
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top