Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ClientDataSet erkennt neues Feld nicht (https://www.delphipraxis.net/102778-clientdataset-erkennt-neues-feld-nicht.html)

Dicksaiter 9. Feb 2008 10:10

Re: ClientDataSet erkennt neues Feld nicht
 
Hallo Chemiker,

hast Du das Problem lösen können ?
Ich stehe vor dem gleichen, der hier nagegebene Link zeigt nur wie man die Datenbank zur Laufzeit anlegt.
Aber ich habe keinen Hinweis darauf gefunden, wie man zur Laufzeit die Datenbank um ein Feld erweitern kann.
Ist natürlich möglich das mein englisch nicht ausreicht oder ich hab irgend etwas übersehn :oops: .

ciao ..Dicksaiter

Chemiker 9. Feb 2008 16:36

Re: ClientDataSet erkennt neues Feld nicht
 
Hallo Dicksaiter,

herzlich Willkommen in der DP.

Nein, ich habe das Problem leider nicht lösen können. Ich wollte auch nicht zu viel Arbeit mit dem Suchen zubringen. Ich benutzte diese Datenbank als „Memory – Stick Datenbank“ um bei Besprechungen aktuelle Betriebsdaten auf jeden Rechner in der Firma zur Verfügung zu haben. Ich habe die Felder neu angelegt und unter einen neuen FileName abgespeichert. Da die Daten von einer richtigen Datenbank kommen und ich nur ein Teil davon brauche war der Aufwand nicht so groß.
Prinzipiell ist es bei Datenbanken ja so, dass man sich vor dem Anlegen genau überlegen sollte welche Felder man braucht und in welcher Beziehung die Daten zueinander stehen.
Damit wird dann vermieden, dass man im Nachhinein ein neues Feld in die Anwendung reinfummeln muss.

Bis bald Chemiker

Dicksaiter 9. Feb 2008 17:22

Re: ClientDataSet erkennt neues Feld nicht
 
Hallo Chemiker,

Danke für den Willkommensgruß :-D

Ich habe weiter gesucht und folgendes gefunden:

ClientDataSet2.Data:=ClientDataSet1.Data; //kopiere Datenmenge
ClientDataSet1.Close;
ClientDataSet1.FieldDefs.Add('TMPFELD',ftString,20 ); //neues Feld hinzufügen
ClientDataSet1.CreateDataSet;
ClientDataSet1.Open;
for y:=0 to ClientDataSet2.RecordCount-1 do // Jetzt die alten Daten zurück kopieren
begin
ClientDataSet1.Append;
for i:=0 to ClientDataSet2.FieldCount-1 do
ClientDataSet1.Fields.Fields[i]:=ClientDataSet2.Fields.Fields[i];

ClientDataSet1.Post;
end;


Ich habe es bei mir ausprobiert und es funktioniert. So habe ich ein neues Datenfeld hinzugefügt und die alten Daten behalten.
Ich brauche keine Datei umkopieren.

ciao ..Dicksaiter

ferby 29. Mär 2008 18:44

Re: ClientDataSet erkennt neues Feld nicht
 
Hallo,

ich hatte das selbe Problem und habe es so gelößt:

1) Beim TClientDataSet Rechtsklick --> Daten löschen
2) Delphi schließen + neu starten
3) Feld hinzufügen
4) TClientDataSet Rechtsklick --> DataSet erstellen
5) TClientDataSet Rechtsklick --> In MyBase-XML-Tabelle speichern


Ist zwar ein wenig umständlich aber so funktionierts bei mir immer.

Geronimo 18. Nov 2014 10:34

AW: ClientDataSet erkennt neues Feld nicht
 
Hallo an alle.

Ich zupfe noch mal diesen alten Thread hier 'raus, weil offensichtlich alle das gleiche Problem haben, zur Designzeit neue Felder einfügen zu wollen/müssen.
Bei mir funktioniert das, wenn zuerst die FieldDefs erstellt werden und anschließend die Felder mit dem Feldeditor. Der Feldeditor scheint die FieldDefs zu
benutzen und greift ins Leere, wenn sie nicht vorhanden sind.

Also folgendes Vorgehen, analog zu ferbys Beitrag:

1) Beim TClientDataSet Rechtsklick --> Daten löschen (Danach steht active auf false.)
2) FieldDefs einfügen
3) Feld hinzufügen
4) TClientDataSet Rechtsklick --> DataSet erstellen (Danach steht active auf true.)

(Ohne An-Aus und so tun, als wäre nichts gewesen.)


Könnt Ihr dieses Verhalten des TClientDataset bestätigen? Oder ist es wieder nur bei mir Zufall?

Gruß
Geronimo


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz