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

  • 来源: 互联网 作者: rocket   2008-03-20/14:06
  • 以前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写的,也一样都可以通过.



    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多