在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
习惯了.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; |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论