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

原创 2002年12月16日 09:34:00

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

TClientDataSet中关于TField、TFieldDef动态创立字段的应用

//使用 TFieldDef 建表:   begin   with ClientDataSet1.FieldDefs do   begin    Add('Name' , ftString, 12, ...
  • jupt1
  • jupt1
  • 2013年11月27日 22:12
  • 1668

delphi 插入数据时给字段赋空值

当需要赋空值时,要先确定该字段的类型,然后再对value进行赋值,如下:      ParamByName('supplement').DataType := ftString;       Par...
  • fanhongbin
  • fanhongbin
  • 2014年06月12日 14:02
  • 2399

Delphi 7 ADO使用

Delphi7 ADO面板上的控件简介 一、 TADO Connection组件 该组件用于建立数据库的连接。ADO的数据源组件和命令组件可以通过该组件运行命令及数据库中提取数据等。 该组件用于...
  • u010673851
  • u010673851
  • 2014年02月11日 13:18
  • 1553

要提高SQL查询效率where语句条件的先后次序应如何写

我们要做到不但会写SQL,还要做到写出性能优良的SQL语句。(1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中...
  • sforiz
  • sforiz
  • 2010年03月04日 12:17
  • 38588

delphi中更新表字段update BLOB型数据(image)/获取图片转成BLOB型存入数据库

我用的是ODAC 链接oracle数据库,delphi中update BLOB型数据问题困扰了我很久,我发现我直接 v_sql :='update xx_image set image:=in_im...
  • urnot
  • urnot
  • 2017年10月23日 09:27
  • 122

linux 下初学使用gcc编程

gcc是GNU C Compiler的缩写,是Linux下一款功能强大的编译器。它支持多种硬件平台,并且编译出的可执行代码执行效率较高。下面我们就一起学习如何使用它。        首先,简单介绍一...
  • haikuhaiku
  • haikuhaiku
  • 2013年11月21日 11:43
  • 402

根据Model层数据的内容 来计算cell的高度

#pragma mark 根据模型计算出整个cell的高度 +(CGFloat)calcHeightForCellWithStudent:(Student *)student; =====...
  • bellazhouyi
  • bellazhouyi
  • 2015年09月28日 16:34
  • 224

Dialog 的用法

private void showDialog(final String str,final CharSequence charSequence,final CharSequence charSequ...
  • u010069940
  • u010069940
  • 2014年02月28日 17:02
  • 745

用栈计算逆波兰式

#include #include #include typedef struct Mystack *Stack; struct Mystack { int Capacity; ...
  • buaa_shang
  • buaa_shang
  • 2013年06月18日 00:50
  • 2293

如何在程序中执行动态生成的Delphi代码

如何在程序中执行动态生成的Delphi代码  经常发现有人提这类问题,或者提问内容最后归结成这种问题  前些阵子有位高手写了一个“执行动态生成的代码”,这是真正的高手,我没那种功力,我只会投机...
  • wc1000
  • wc1000
  • 2015年07月18日 16:04
  • 1087
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何在Delphi中用代码来完成计算字段的创建
举报原因:
原因补充:

(最多只允许输入30个字)