Delphi手动创建数据集

http://www.cnblogs.com/dashan9zj/articles/1386970.html

习惯了.net的DataTable,便习惯性的认为Delphi中也有类似的东西,结果搞了好久才搞定,看来看去是拿着Delphi实现.net的思想,生搬硬套了,不过倒也解决了一些问题语言间的思想差别还是有的呃。

1数据集的创建CreatDataSet: TDataSet;

目标是创建一个类似于DataTable的对象,我们可以指定列的字段,也可以手动添加行。

在Delphi中是用DB.TDataSet来实现的(相当于DataTable,与.net的DataSet可是两个概念啊)。

在这里要用到DBClient.TClientDataSet,至于两者的关系,自己去查吧。

方法如下:

function TForm3.CreateDataSet: TDataSet;

var

dsTemp:TDataSet;

cdsTemp: TClientDataSet;

begin

//初始化

dsTemp := TDataSet.Create(Application);

try

    //字段名设置

    with dsTemp.FieldDefs do

    begin

      Add('code',ftString,8);

      Add('name',ftString,20);

      Add('Number',ftInteger);

    end;

    //创建DataSet

    cdsTemp := TClientDataSet.Create(Application);

    if dsTemp.FieldDefs <> nil then

    begin

      cdsTemp.FieldDefs.Assign(dsTemp.FieldDefs);

      cdsTemp.CreateDataSet;

      result := (cdsTemp as TDataSet);

    end;

finally

    //内存释放

    dsTemp.Free;

end;

end;

2 数据集数据的添加AddDataToSet;很简单的 打开数据集-添加行-赋值-提交

function TForm3.AddDataToSet(AdsData: TDataSet): TDataSet;

var

intLoop:Integer;

begin

//打开数据集

AdsData.Open;

with AdsData do

begin

    for intLoop := 0 to 10 do

    begin

      Append;//添加

      FieldByName('Code').AsString := 'Code' + intToStr(intLoop);

      FieldByName('Name').AsString := 'Name' + intToStr(intLoop);

      FieldByName('Code').AsInteger := intLoop;

      post;//提交

    end;

end;

end;

3 修改数据集中某个Field的值 ChangeDataSetValue。这个在.net中可以直接改,不过在这里还是有区别的。这里我们把刚才建的数据集中Name Field的值给改掉

示例代码如下:

   AdsData.Open;                                      //打开

   AdsData.First;                                    

   while Not AdsData.Eof do

   begin

     AdsData.FieldByName('Name').ReadOnly := false;     //只读属性修改

     AdsData.Edit;                                      //打开编辑

     AdsData.FieldByName('Name').AsString := 'NewName'; //修改

     AdsData.Post;                                      //提交

     AdsData.Next;

   end;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值