Ich habe Probleme herauszufinden, wie man neue Datenfelder zu einer alten Datei hinzufügt. Zum Beispiel könnte ein altes Dataset nur ein ID-Feld haben. Später entscheiden wir, dass wir ein ISACTIVE-Feld brauchen. Ich möchte meine ID-only-Daten erneut öffnen und sie dann mit ISACTIVE-Werten erneut speichern. Zum Beispiel:Delphi ClientDataSet - Wie fügt man dem bestehenden Dataset neue Datenfelder hinzu?
CDS := TClientDataset.Create(nil);
with TIntegerField.Create(CDS) do
begin
FieldName := 'ID';
FieldKind := fkData;
DataSet := CDS;
end;
CDS.CreateDataSet;
CDS.Close;
with TBooleanField.Create(CDS) do
begin
FieldName := 'ISACTIVE';
FieldKind := fkData;
DataSet := CDS;
end;
CDS.Open; // <--Raises EDatabaseError with message 'Field 'ISACTIVE' not found'.
ich einen Blick für ähnliche Fragen hatte, fand in der Nähe Ich war einer, der nur zu einem Datensatz mit neuen berechneten Feldern betroffen. Diese Methode funktioniert gut, um ein berechnetes Feld hinzuzufügen.
Im Moment ist die einzige (chaotische) Lösung, die ich mir vorstellen kann, die ID-only-Daten in ein temporäres Dataset zu laden, dann ein neues Dataset mit definierten ID- und ISACTIVE-Feldern zu erstellen und dann das ID-only-Dataset zu durchlaufen und kopieren Sie die Datensätze in den neuen Datensatz.
Ist diese Hilfe Sie ? http://stackoverflow.com/questions/21293186/delphi-change-fields-definitions-of-a-tclientdataset-that-has-data – Graymatter
hmm, yep in gewisser Weise. Es ist eine merkwürdig gestellte Frage, denke ich ?! Wie auch immer, diese Antwort http://stackoverflow.com/a/21295035/6620329 beschreibt, was ich als "unordentliche" Lösung am Ende meiner Frage bezeichnet.Vielleicht ist das die einzige Option, die mir zur Verfügung steht (Bar MartynAs Vorschlag, die Textdatei auf der Festplatte zu bearbeiten). –