//创建临时表格function TForm1.CreateTableInMemory(const AFieldDefs:TFieldDefs):TDataSet;var TempTable:TClientDataSet;begin TempTable := nil; Result :=nil; if AFieldDefs <> nil then begin try TempTable := TClientDataSet.Create(Application); TempTable.FieldDefs.Assign(AFieldDefs); TempTable.CreateDataSet; Result := (TempTable as TDataSet); except if TempTable <> nil then TempTable.Free; Result := nil; raise; end endend;
//调用
procedure TForm1.Button1Click(Sender: TObject);var ADataSet:TDataSet;begin ADataSet:=TDataSet.Create(Self); with ADataSet.FieldDefs do begin Add('Name',ftString,30,False); Add('Value',ftInteger,0,False); end; with DataSource1 do begin DataSet:=CreateTableInMemory(ADataSet.FieldDefs); DataSet.Open; end; ADataSet.Free;end;