delphi手动创建dataset并插入值

unit Unit1;

interface

uses
  Winapi.Windows,Winapi.Messages,System.SysUtils,System.Variants,System.Classes,Vcl.Graphics,
Vcl.Controls,Vcl.Forms,Vcl.Dialogs,DB,DBClient,Vcl.Grids,Vcl.DBGrids;

type
TForm1 = class(TForm)
dbGrd1: TDBGrid;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
class function AddDataToSet(AdsData: TDataSet): TDataSet;
class function CreateDataSet(dstemp:TDataSet): TDataSet;
end;

var
Form1: TForm1;

implementation


//创建dataset
class function TForm1.CreateDataSet(dstemp:TDataSet): TDataSet;
var
cdstemp: TClientDataSet;
begin
try
//创建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;


class function TForm1.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;
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
dstemp:TDataSet;
begin
//初始化
dstemp := TDataSet.Create(Application);
with dstemp.FieldDefs do
begin
Add(‘code‘,ftString,8);
Add(‘name‘,20);
Add(‘Number‘,ftInteger);
end;
dstemp:=TForm1.CreateDataSet(dstemp);
TForm1.AddDataToSet(dstemp);

dstemp.Open;
while not dstemp.Eof do
begin
showmessage(string(dstemp.FieldByName(‘Name‘).Value)) ;
dstemp.Next ;
end ;

end;

end.
---------------------

DataSet有两个东西,一个是表结构FieldDefs,一个是TClientDataSet。这个.net还是有一些不同。

相关文章

 从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都...
  从网上看到《Delphi API HOOK完全说明》这篇文章,基本上...
ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c+&#x...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和ED...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的...