给数据添加计算字段

原创 2004年07月09日 16:21:00
{>------------------------------------------------------------
 过程功  能: 给数据添加计算字段
 修改改说明:
   增加参数: name : string
             Xtype: integer 用以指定字段类型
                    0: 为Integer 1:为String
       作用: 用以指定要添加计算字段的字段名称,有利于扩展过程的作用域
<-------------------------------------------------------------}
procedure AddCalcField(Cds: TClientDataset; aName: string; Xtype: integer);
Var
  FieldList:TList;
  FieldItem:TFieldInfo;
  FData: OleVariant;
  I:integer;
begin
  If Not Cds.Active Then
     Exit;
  FData := Cds.data;
  FieldList:=TList.Create;
  For I:=0 to Cds.FieldDefs.Count-1 Do
  Begin
    New(FieldItem);
    FieldItem^.FieldClass:=Cds.FieldDefs.Items[i].FieldClass;
    FieldItem^.FieldName :=Cds.FieldDefs.Items[i].name;
    FieldItem^.size := Cds.FieldDefs.Items[i].size;
    FieldItem^.Index := Cds.FieldDefs.Items[i].Index;
    FieldList.Add(FieldItem);
  End;
  if Cds.FindField(aName)<>nil then Exit;  //如果已创建过不再创建'GridXh'
 
  Cds.Close;
  Cds.FieldDefs.BeginUpdate ;
  {>-----------创建计算字段----------------}
  Case Xtype of
  0:
    With TIntegerField.Create(Cds) Do
    Begin
      FieldName :=aName;
      DisplayLabel :=aName;
      FieldKind :=fkCalculated;
      Visible:=True;
      Dataset:=Cds;
    End;
  1:
    With TStringField.Create(Cds) Do
    Begin
      FieldName :=aName;
      DisplayLabel :=aName;
      FieldKind :=fkCalculated;
      Visible:=True;
      Dataset:=Cds;
    End;
  end;//Case
  {<-------------------------------------}
  Cds.FieldDefs.EndUpdate;
  For I:=0 to FieldList.Count-1 Do
  Begin
    if Cds.FindField(TFieldInfo(FieldList.Items[i])^.FieldName)=nil then
      with TFieldInfo(FieldList.Items[i])^.FieldClass.Create(Cds) do
      begin
        FieldName := TFieldInfo(FieldList.Items[i])^.FieldName;
        size := TFieldInfo(FieldList.Items[i])^.size;
        Index := TFieldInfo(FieldList.Items[i])^.Index;
        Dataset := Cds;
        Freemem(FieldList.Items[I],Sizeof(TFieldInfo));
      end;
  End;
  FieldList.Free ;
  Cds.AppendData(Fdata, false);

MySQL-创建计算字段

在谈计算字段之前,我们先想一想。储存在数据库中的原始表给我们提供了足够的数据,比如products表中就有商品id,商品名,供应商id,单价。但是实际生活中,比如超市收银员,他们在打单据的时候可不是直...
  • PythonKidDz
  • PythonKidDz
  • 2017年02月13日 22:39
  • 1532

增加 大量数据 表字段

今天公司有个小需求,然后需要增加两个字段.可是执行下来特别慢.上网看了下说是因为大量数据造成的. 参考网上例子速度果然快了很多.故记录以备参考!       当你去修改一个有大量数据表的结...
  • c5153000
  • c5153000
  • 2012年02月02日 09:46
  • 2032

为Oracle 和 MSSQL 数据库表里的字段添加约束

修改不同的表要写不同的alter table 不同的表 alter table 你的表--此为修改表约束 add /*必须包含add 添加*/ constraint/*约束,也必须包含*/ ...
  • myflysun
  • myflysun
  • 2014年01月03日 09:10
  • 1737

mysql给表添加多个字段

alter table a_user ADD( `threeconstantsys` varchar(50) DEFAULT NULL COMMENT '三恒系统',   `landcertifi...
  • bestlove12345
  • bestlove12345
  • 2017年01月10日 10:08
  • 2092

用SQL向表中添加一个字段

用法1、用SQL增加一个字段,并使她为主键。用alter table T add... alter table T add 字段名 int primary key 用法2、用SQL增加一个...
  • kunkun378263
  • kunkun378263
  • 2013年11月28日 17:10
  • 9543

MySQL合并数据和给表,字段取别名

union关键字 SELECT s_id, f_name, f_price  FROM fruits WHERE f_price UNION ALL SELECT s_id, f_name...
  • c1z2w3456789
  • c1z2w3456789
  • 2016年12月27日 17:11
  • 1756

mysql给表的字段加索引

1、添加普通索引ALTER TABLE `table_name` ADD INDEX index_name ( `column` )2、添加主键索引ALTER TABLE `table_name` A...
  • u014643282
  • u014643282
  • 2017年07月25日 15:42
  • 1795

oracle给表添加多个字段

alter table merchm.SUPPORT_FLOW_TASK add (AUDIT_USER_ID VARCHAR2(500), FLOW_TYPE VARCHAR2(10)); com...
  • ll470024581
  • ll470024581
  • 2015年01月27日 14:23
  • 363

sql server 给某张已经存在的表添加一个字段

其实很简单,就是每次都忘了,随便记录下 关键字: alert   table  tablename   add  [clumName] nvarchar(500) null  其中alter tabl...
  • ypz131023
  • ypz131023
  • 2017年06月06日 12:03
  • 874

mysql 如何给大表添加字段

create table xx_order_bak like xx_order; alter table xx_order_bak add column `unit` int(10) DEFAULT...
  • lifaming15
  • lifaming15
  • 2015年12月10日 22:59
  • 2827
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:给数据添加计算字段
举报原因:
原因补充:

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