怎么样对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;

解决方案 »

  1.   

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

  2.   

    你可以动态的创建一个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操作了,如果有必要的话在扩展该方法,定义索引字段等。
    另外,用完后别忘了释放对象!
      

  3.   

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

  4.   

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