![]() |
Datenbank: Keine • Zugriff über: ClientDataSet
ClientDataSet erkennt neues Feld nicht
Hallo,
ich habe beim ClientDataSet versucht ein neues Feld anzulegen, bekomme aber jetzt immer eine Fehlermeldung: Zitat:
Wie kann ich erreichen, dass das neue Feld erkannt wird? Bis bald Chemiker |
Re: ClientDataSet erkennt neues Feld nicht
Das Feld ist dem Provider bekannt?
Verbinde mal neu mit dem Provider. |
Re: ClientDataSet erkennt neues Feld nicht
Hallo mkinzler,
nein, ich erstelle ein XML – File: Ich habe die Daten – Felder im ClientDataSet angelegt und unter FileName ein Dateiname eingetrage: TankZustandsprotokoll.xml Das hat auch soweit alles funktioniert, jetzt wollte ich noch ein Feld hinzufügen, aber es wird nicht angenommen. Bis bald Chemiker |
Re: ClientDataSet erkennt neues Feld nicht
Hast du das Feld auch unter .FieldDefs angelegt?
|
Re: ClientDataSet erkennt neues Feld nicht
Hallo mkinzler,
nein, ich habe jetzt alle Felder gelöscht und noch mal Dataset erstellen lassen, unter einen neuen FileName. Dann wird auch das neue Feld erkannt. Offensichtlich ist es nicht möglich einen bestehenden Datenbestand um ein Feld zu erweitern. Oder hast Du noch eine Idee? Bis bald Chemiker |
Re: ClientDataSet erkennt neues Feld nicht
Dann versuch mal das Feld zuerst unter .FielDefs zuzufügen
|
Re: ClientDataSet erkennt neues Feld nicht
Hallo mkinzler,
habe das Feld unter TFieldDefs angelegt, aber es wird trotzdem nicht übernommen. Es kommt die Fehlermeldung: Zitat:
Bis bald Chemiker |
Re: ClientDataSet erkennt neues Feld nicht
Wie hast du es versucht anzulegen?
|
Re: ClientDataSet erkennt neues Feld nicht
Hallo mkinzler,
das neue Feld zuerst mit dem Feld – Editor im ClientDataSet anlegt. Dann ClientDataSet markiert und unter FieldDefs doppelClick aufrufen, anschließend mit Hinzufügen das neue Feld hinzufügen. Neues Feld markieren und den Name und DataType ändern. ClientDataSet.Active auf TRUE setzen, dann kommt wieder die erste Fehlermeldung. Danach ist das Feld aus dem FiedDefs wieder verschwunden und es sind nur wieder die ersten 3 Felder vorhanden. Bis bald Chemiker |
Re: ClientDataSet erkennt neues Feld nicht
|
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 |
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 |
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 |
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. |
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 12:55 Uhr. |
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