听说TClientDataSet可以不与数据库相关联,我想用TClientDataSet动态定义记录集,请问如何给TClientDataSet自定义字段,并能通过赋值增加记录?

解决方案 »

  1.   

    var
      Field: TField;Field := TIntegerField.Create(CDS);
    Field.DataSet := CDS;
    // 上面两句必要
    还有如 size/displaylabel, DisplayFormat 之类, 看 field 类型, string 的必要指 size 等等完成后CDS.CreateDataSet;
      

  2.   

    主要可建立的 Field 在此AsVariant AsString AsInteger AsFloatAsCurrencyAsBCD AsDateTimeAsSQLTimeStamp AsBoolean
    TStringField yes NA yes yes yes yes
    TWideStringField yes yes yes yes yes yes
    TIntegerField yes yes NA yes
    TSmallIntField yes yes yes yes
    TWordField yes yes yes yes
    TLargeintField yes yes yes yes
    TFloatField yes yes yes yes
    TCurrencyField yes yes yes yes
    TBCDField yes yes yes yes
    TFMTBCDField yes yes yes yes
    TDateTimeField yes yes yes yes
    TDateField yes yes yes yes
    TTimeField yes yes yes yes
    TSQLTimeStampField yes yes yes yes
    TBooleanField yes yes
    TBytesField yes yes
    TVarBytesField yes yes
    TBlobField yes yes
    TMemoField yes yes
    TGraphicField yes yes
    TVariantField NA yes yes yes yes yes
    TAggregateField yes yes
      

  3.   

    楼上的,或者
        CDS.FieldDefs.Clear;
        CDS.FieldDefs.Add('Col1',ftInteger);
        CDS.FieldDefs.Add('Col2',ftString,20);
        
        CDS.CreateDataSet;
      

  4.   

    To comanche(太可怕):
    "Field := TIntegerField.Create(CDS)"这句是什么意思啊?是不是建立一个Integer型的字段啊?那如果我还想再加一个字符型的字段是不是紧接在后面写"Field := TStringField.Create(CDS)"?
      

  5.   

    是, Cds 是某一个 TClientDataSet, 都是数据形的字类可以用 FieldDefs,那样更方便, 这样作可以加入字算字段/lookup字段