| Autor | 
Beitrag | 
infomio 
        
 
Beiträge: 110 
 
Win  xy 
 
 | 
Verfasst: Di 10.02.04 12:16 
 
Wie kann man Daten in ein XML speichern über TClientDataSet solls gehen, aber wie genau legt man dort Daten ab, liest sie wieder aus, etc
 
 
 hat da jemand ein Beispiel für mich ???
 
 Danköööö 
_________________ Viele Wege führen nach Rom - aber welcher führt zurück???
  
 | 
 | 
MSCH 
        
 
Beiträge: 1448 
Erhaltene Danke: 3 
 
W7 64 
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer 
 | 
Verfasst: Di 10.02.04 18:45 
 
Du benötigst imho dazu erstmal ein Schema, woher soll denn sonst das Dataset wissen, welche Struktur du hast.
 also, schreib dir eine einfache XML-Datei mit allen benötigten Infos auf und rufe den XML-Mapper auf und definiere Datenpakete.
 alles weitere in der OH.
 grez
 msch 
_________________ ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
  
 | 
 | 
infomio   
        
 
Beiträge: 110 
 
Win  xy 
 
 | 
Verfasst: Di 10.02.04 22:45 
 
klingt einleuchtend... und genau das mit dem Schema und dem XML Mapper... keinen blassen Dunst !!!!    
_________________ Viele Wege führen nach Rom - aber welcher führt zurück???
  
 | 
 | 
catweasel 
        
 
Beiträge: 487 
Erhaltene Danke: 1 
 
Win 7 64bit 
Delphi 7 Second Sedition V7.2 
 | 
Verfasst: Di 10.02.04 22:50 
 
Geht supereinfach...
 
Ich verweise an der Stelle mal auf ein Tut aus nem anderen Forum...
 Da geht das mit dem TCliendtataset und soweit ich weiss ganz ohne mapper ... (Hab jedenfalls nix davon gemerkt...)
 www.tutorials.delphi-source.de/mybase/
Ich hoffe Tino ruft deswegen nicht gleich die Prozedur steinigen(catweasel); auf   
Catweasel..  
_________________ Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
  
 | 
 | 
Christian S. 
        
 
Beiträge: 20451 
Erhaltene Danke: 2264 
 
Win 10 
C# (VS 2019) 
 | 
Verfasst: Di 10.02.04 22:59 
 
	  | Zitat: | 	 		  | Ich hoffe Tino ruft deswegen nicht gleich die Prozedur steinigen(catweasel); auf | 	 
 Ich glaube, diese Woche ist der Scheiterhaufen dran.    
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
  
 | 
 | 
infomio   
        
 
Beiträge: 110 
 
Win  xy 
 
 | 
Verfasst: Di 10.02.04 23:18 
 
Scheiterhaufen? Genau den Einstieg habe ich gesucht!!!
 Danke Mann!
    
_________________ Viele Wege führen nach Rom - aber welcher führt zurück???
  
 | 
 | 
infomio   
        
 
Beiträge: 110 
 
Win  xy 
 
 | 
Verfasst: Di 10.02.04 23:20 
 
Gibts irgendein Tool, das das Anlegen von "XML-Tabellen" vereinfacht???
 Möglichst in Deutsch und Freeware ??? Bin doch ne arme S... 
_________________ Viele Wege führen nach Rom - aber welcher führt zurück???
  
 | 
 | 
catweasel 
        
 
Beiträge: 487 
Erhaltene Danke: 1 
 
Win 7 64bit 
Delphi 7 Second Sedition V7.2 
 | 
Verfasst: Di 10.02.04 23:39 
 
	  | Zitat: | 	 		  | Gibts irgendein Tool, das das Anlegen von "XML-Tabellen" vereinfacht??? | 	  
Naja, also wenn dir er Feldeditor des ClientDataSets nicht zusagt dann keine Ahnung. Die wird ja beim Speichern vom Dataset automatisch angelegt wenn sie noch nicht existiert...
 Catweasel  
_________________ Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
  
 | 
 | 
infomio   
        
 
Beiträge: 110 
 
Win  xy 
 
 | 
Verfasst: Di 10.02.04 23:45 
 
Schade eigentlich, hatte gedacht man könnte über ein create-statement einfach mal ne xml-datei anlegen, die dann von TClientDataset ausgelesen werden kann, würde mir nen Haufen Arbeit ersparen...
 
 Aber des muß es doch geben!!!
 
 dein Spruch mit den Pommes is cool! 
_________________ Viele Wege führen nach Rom - aber welcher führt zurück???
  
 | 
 | 
catweasel 
        
 
Beiträge: 487 
Erhaltene Danke: 1 
 
Win 7 64bit 
Delphi 7 Second Sedition V7.2 
 | 
Verfasst: Mi 11.02.04 01:08 
 
	  | Zitat: | 	 		  | Schade eigentlich, hatte gedacht man könnte über ein create-statement einfach mal ne xml-datei anlegen, die dann von TClientDataset ausgelesen werden kann, würde mir nen Haufen Arbeit ersparen...  | 	  
Welche Arbeit würdest du dir ersparen ?
 Einfach ein paar Felder serstellen.. 
 damit existiert das XML dokument als Grundgerüst schonmal.. (Im Speicher)..
 auf  active := true setzen..
 Jetzt kann man sogar Daten bearbeiten    (natürlich nur wenn man will    )
 Ein Aufruf von
 clientdataset.update; bzw.  clientdataset.savetofile...
schreibt er was in der Speicher-XML "datei" steht als xml auf Platte... 
 (gibts die Datei noch garnicht, wird sie neu erstellt....ist sie vorhanden wird sie überschrieben) So einfach is das..
 Das ist auch so ein bischen der Haken beider Arbeit mit XML (ohne BDE oder so eben).: Das ganze Teil ist während der Laufzeit komplett im Speicher.....
 Eine XML-Datei die die Schuhgrösse  aller Chinesen enthält wäre wohl etwas unpraktisch   
Wenn du also speicherst ohne was einzigeben... Voila da ist die leere XML Datei
 Catweasel  
_________________ Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
  
 | 
 | 
infomio   
        
 
Beiträge: 110 
 
Win  xy 
 
 | 
Verfasst: Mi 11.02.04 07:56 
 
wie macht man dann einen update pder ein delete auf einen bestimmten Datensatz? Das wäre vorerst meine letzte Frage zum Thema XML!
 
   
_________________ Viele Wege führen nach Rom - aber welcher führt zurück???
  
 | 
 | 
KidPaddle 
        
 
Beiträge: 351 
 
WinXP,Linux 
D7 Prof, XE7 
 | 
Verfasst: Mi 11.02.04 09:03 
 
Wie bei jedem normalen TDataset. Mit der Methode Delete wird der aktuelle Datensatz gelöscht. Ein neue Datensatz wird mit Append eingeleitet und mit Post abgeschlossen und bei einer Aktualisierung wird anstelle von Append Edit aufgerufen.
 
Also ein Insert geht so:
 		                                                          Delphi-Quelltext                                	 															1: 2: 3:
  				 | 									Dataset.Append; Dataset.FieldByName('Vorname').AsString := 'Thomas'; Dataset.Post;					 				 | 			 		 	  
Also eine Aktualisierung geht so:
 		                                                          Delphi-Quelltext                                	 															1: 2: 3:
  				 | 									Dataset.Edit; Dataset.FieldByName('Vorname').AsString := 'Thomas'; Dataset.Post;					 				 | 			 		 	  
Gruß
 KidPaddle
 Moderiert von  Klabautermann: Delphi-Tags hinzugefügt. 
 
 | 
 | 
infomio   
        
 
Beiträge: 110 
 
Win  xy 
 
 | 
Verfasst: Mi 11.02.04 09:07 
 
dann bräuchte ich aber die Möglichkeit einer SQL-Abfrage o.ä.
 
 wie macht man dann ein update auf einen bestimmten Datensatz, wenn man keine datesensitiven Elemente wie DBGrid oder DBEdit-Komponenten verwenden will ??? 
_________________ Viele Wege führen nach Rom - aber welcher führt zurück???
  
 | 
 | 
catweasel 
        
 
Beiträge: 487 
Erhaltene Danke: 1 
 
Win 7 64bit 
Delphi 7 Second Sedition V7.2 
 | 
Verfasst: Mi 11.02.04 11:28 
 
mit Update datest du alles up (die "Datenbank" an sich).
 
 Catweasel 
_________________ Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
  
 | 
 | 
infomio   
        
 
Beiträge: 110 
 
Win  xy 
 
 | 
Verfasst: Mi 11.02.04 11:43 
 
und wenn ich nicht alles updaten will ??? Ist dann Paradox mit einem BDE-Ersatz besser???    
_________________ Viele Wege führen nach Rom - aber welcher führt zurück???
  
 | 
 | 
catweasel 
        
 
Beiträge: 487 
Erhaltene Danke: 1 
 
Win 7 64bit 
Delphi 7 Second Sedition V7.2 
 | 
Verfasst: Mi 11.02.04 13:54 
 
Ä... wenn ich eine XML Datei update und die Datensätz unverändert lasse dann ist das update identisch mt dem Orginal.
 Wenn du also Datensätze 2,5 und sieben nicht "updaten" willst. Dann veränder sie eben einfach nicht     
Mach dir mal klar wie das Clientdataset arbeitet...
 Catweasel  
_________________ Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
  
 | 
 | 
infomio   
        
 
Beiträge: 110 
 
Win  xy 
 
 | 
Verfasst: Mi 11.02.04 14:51 
 
  sorry war ne lange Nacht...
 aber wie filert ihr dann einen Satz raus? ich will z.B. aus einer Kundentabellle den mit der ID 3667 bearbeiten. Geht das dann mit ner while break schleife oder kann man auch fragen: select * from kunde.xml where kunid = 3667 ???  
_________________ Viele Wege führen nach Rom - aber welcher führt zurück???
  
 | 
 | 
KidPaddle 
        
 
Beiträge: 351 
 
WinXP,Linux 
D7 Prof, XE7 
 | 
Verfasst: Mi 11.02.04 15:13 
 
Sieh dir bitte FindKey oder Locate von TClientDataset an. Damit springst Du zu diesem Satz und kannst mit Edit/Post den Datensatz ändern. Desweiteren ist die Filter - Property ganz nützlich, um nur noch die Daten zu haben, die zu dem Filter passen.
 
 Ich würde mir mal die Grundlagen zum Umgang mit TDatasets ansehen, denn das hat werde was mit XML oder mit SQL zu tun. 
 
 Gruß
 KidPaddle 
 
 | 
 | 
infomio   
        
 
Beiträge: 110 
 
Win  xy 
 
 | 
Verfasst: Mi 11.02.04 15:30 
 
Danke Leute, ihr seid spitze!!! Jetzt geb ich Ruh! 
_________________ Viele Wege führen nach Rom - aber welcher führt zurück???
  
 | 
 | 
Udontknow 
        
 
Beiträge: 2596 
 
Win7 
D2006 WIN32, .NET (C#) 
 | 
Verfasst: Mi 11.02.04 16:11 
 
Wer´s glaubt...     
Ähm, was hat den bitte schön das TClientdataset großartig mit XML zu tun? Gut, man kann die Daten im XML-Format abspeichern und wieder einlesen, aber das war´s doch dann auch schon. Datenmanipulation über Dataset.Edit etc. dagegen hat nicht die Bohne mit XML zu tun. Bitte dann ein neues Topic aufmachen...
 Cu,
 Udontknow  
 
 | 
 |