2012-08-29 19 views
3

我有一个简单的代码它创建一个副本的数据集和所有它在运行时的详细数据集:我可以在运行时创建TDataSetFields吗?

DestDataSet.FieldDefs.Assign(SourceDataSet.FieldDefs); 
    SourceDataSet.GetDetailDataSets(DetailList); 
    for i := 0 to DetailList.Count - 1 do 
    begin 
     with DestDataSet.FieldDefs.AddFieldDef do 
     begin 
     Name := TDataSet(DetailList[i]).Name; 
     DataType := ftDataSet; 
     end; 
     DetailCDSs.Add(NestedCDS); 
    end; 
    DestDataSet.CreateDataSet; 

CreateDataSet引发EDBClient异常消息“无效的字段类型”。谁能告诉我什么是错的?

+3

如果使用数据类型为ftdataset的fielddef创建数据集,则需要声明子定义(childdefs),直到声明不是ftdataset。 – Hendra

+0

@ Hendra感谢您的提示。 :-) –

+0

不客气,@iman – Hendra

回答

0

如果您创建的数据集中包含FieldDef,那么您需要在创建数据集之前声明子定义。

相关问题