怎么样对ClientDataSet动态增加字段?


怎么样对ClientDataSet动态增加字段?
我现在只有一个二维数组,和一个ClientDataSet,怎样把这个二维数组放到ClientDataSet中去?
我这样子做行不通:
procedure AddItIntoClientDataSet;
var
  myField: TField;
  myFieldType: TFieldType;
begin
    ClientDataSet1.Active := false;
    myField := TField.Create(nil);
    myFieldType := ftString;
    myField.SetFieldType(myFieldType);
    myField.FieldName := 'F1';
    ClientDataSet1.Fields.Add(myField);

    ClientDataSet1.CreateDataSet;
    ClientDataSet1.Open;
    ClientDataSet1.Append;
    ClientDataSet1.FieldByName('F1').Value := '1';
....
end;

5 个解决方案

#1


就我所知道的说遗下:
  clientDataSet是用来连接远端模块的,你要实现的功能可以在他说连的数据集中实现。

#2


我想这个数据集也动态创建该怎么做呀?

#3


你可以动态的创建一个TClientDataSet,然后对这个数据集进行操作,具体步骤如下:
function CreateDataSetInMemory(AFieldDefs: TFieldDefs): TDataSet
var tmpTable: TClientDataSet;
begin
  Result := nil
  if AFieldDefs <> nil then
  begin 
    tmpTable := TClientDataSet.Create(nil)
    tmpTable.FieldDefs.Assigned(AFieldDefs);
    Result := (tmpTable as TDataSet);
  end
  else 
    FreeAndNil(tmpTable);
end;

然后在程序里定义一个TDataSet的变量,并对其的FieldDefs属性赋值,再调用上述的方法创建内存里的数据集,你就能够对其想TQuery操作了,如果有必要的话在扩展该方法,定义索引字段等。
另外,用完后别忘了释放对象!

#4


忘了在FreeAndNil(tmpTable)后面加一句Result := Nil了,如果这样能满足你的需求的话,有什么问题可以继续提!

#5


To: juliens(星星球)
那现在的问题转化到了怎么样根椐二维数组创建根据一个TFieldDefs上来了。能不能给个例子,谢谢
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告