2017-05-11 4 views
1

Ich kann spring4d ObjectDataSet zur Laufzeit nicht ordnungsgemäß erstellen und füllen, eine Ausnahme mit der Aussage "Feld ID hat kein Dataset, (Erstellen von Feldern bei Entwurfszeit funktioniert gut) hier ist mein Code:Verwenden von spring4d - TObjectDataset zur Laufzeit

procedure TForm2.FormCreate(Sender: TObject); 
var 
    _id: TIntegerField; 
    _designation: TStringField; 
    _dataset: TObjectDataSet; 
    _artList: IList<TArticle>; 
begin 
    _artList := TCollections.CreateList<TArticle>(true); 
    _artList.add(TArticle.Create(1, 'Article 1')); 
    _artList.add(TArticle.Create(2, 'Article 2')); 
    _artList.add(TArticle.Create(3, 'Article 3')); 

    _dataset := TObjectDataSet.Create(self); 
    _dataset.DataList := _artList as IObjectList; 

    _id := TIntegerField.Create(self); 
    _id.FieldKind := fkData; 
    _id.Name := 'fid'; 
    _id.FieldName := 'ID'; 

    _designation := TStringField.Create(self); 
    _designation.Size := 100; 
    _designation.FieldKind := fkData; 
    _designation.FieldName := 'Designation'; 

    with _dataset.Fields do 
    begin 
    add(_id); 
    add(_designation); 
    end; 

    DataSource1.DataSet := _dataset; 

    // self.DBEdit1.DataField := 'ID'; 
    // self.DBEdit2.DataField := 'Designation'; 

    _dataset.Open; 
    _active := true; 
end; 
+0

Schließlich funktioniert es durch Entfernen der hinzufügen blockieren, und beeinflussen Sie die _dataset zu Field.Dataset (_id.Dataset: = _Daset;) Eigenschaft direkt, was ist das Diff? –

Antwort

1

TFields.Add nicht die Eigenschaft DataSet des übergebenen Feld nicht gesetzt. das hat nichts mit dem Spring4D TObjectDataSet spezifisch ist, sondern innerhalb von Data.DB.pas. Wenn Sie ein Feld zur Designzeit der Designer erstellen setzt die DataSet Eigenschaft des Feldes (siehe DSDefine.pas)

+0

danke, ich habe andere Laufwerk Dataset (TADODataset, Tmemdata) getestet, und ich fand das gleiche Fehlerergebnis, für diese Raison, ich versuche andere Weise, und danke Ihnen für Ihre großen Arbeiten. –