Guten Abend,
ich weiß nicht, ob sich jeder direkt was unter dem Titel vorstellen kann (mir schien es aber als der aussagekräftigste Titel.....), deswegen erläutere ich mein Problem mal genauer:
In meinem Programm benötige ich eine einfache Tabelle, in der ich Zeilen, wie Spalten dynamisch hinzufügen/entfernen/bearbeiten kann, außerdem war es für mich wichtig, dass ich diese Tabelle speichern und laden kann. Ein Freund (hier im Forum auch bekannt als maddin4u
) riet mir dazu MyBase zu verwenden. Also hab ich mich mal im netzt nen bissl schlau gemacht und einige Tutorials gelesen (). Soweit ist auch alles klar, das Erstellen und Arbeiten mit einenm ClientDataSet, nur leider bekomme ich es nicht gebacken eine Spalte (FieldDef) zur Laufzeit hinzuzufügen, ohne das die Daten in den Zellen verloren gehen
In einem kleinen Test-programm, erstelle ich drei Spalten und vervollständige dies mit CreateDataSet:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientDataSet1.FieldDefs.Add('test1', ftString, 20);
ClientDataSet1.FieldDefs.Add('test2', ftString, 20);
ClientDataSet1.FieldDefs.Add('test3', ftString, 20);
ClientDataSet1.CreateDataSet;
end;
Dann versuche ich durch folgende Prozedur eine Spalte (FieldDef) zur Laufzeit hinzufügen.
Delphi-Quellcode:
rocedure TForm1.Button2Click(Sender: TObject);
begin
ClientDataSet1.Insert;
ClientDataSet1.FieldByName('test2').Value:= 'teststring';
ClientDataSet1.Post;
ClientDataSet1.MergeChangeLog;
//ClientDataSet1.Close; //hab ich auch mal ausprobiert, es ist der gleiche Effekt wie mit Active:= false;
ClientDataSet1.Active:= false;
ClientDataSet1.FieldDefs.Add('test4', ftString, 20);
ClientDataSet1.CreateDataSet;
ClientDataSet1.SaveToFile('C:\test2.xml', dfXML);
end;
Wenn ich mir dann die
xml-datei anschaue, she ich zwar, dass die Spalte (FieldDef) "test4" vorhanden ist, jedoch is keine Spur von dem Eintrag "teststring" in der Spalte(FieldDef) "test2".
Meine Frage lautet nun: ist das Hinzufügen von FieldDefs überhaupt zur Laufzeit möglich, was hab ich falsch gemacht/was muss ich ändern?
Hab mich auch schon nach vernünftigen Alternativen umgeschaut, aber keine wirklich gute gefunden
PS: Die FieldDefs können nicht statisch vergeben werden.
PS2: Habe bisher keine, bzw sehr wenig Erfahrungen mit Datebanken...
so far, in hope you can help me
GimbaR