Entwickler-Ecke
Datenbanken - Wie kann man Daten in ein XML speichern
infomio - Di 10.02.04 13:16
Titel: Wie kann man Daten in ein XML speichern
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öööö
MSCH - Di 10.02.04 19: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
infomio - Di 10.02.04 23:45
klingt einleuchtend... und genau das mit dem Schema und dem XML Mapper... keinen blassen Dunst !!!! :cry:
catweasel - Di 10.02.04 23: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...)
http://www.tutorials.delphi-source.de/mybase/
Ich hoffe Tino ruft deswegen nicht gleich die Prozedur steinigen(catweasel); auf ;-)
Catweasel..
Christian S. - Di 10.02.04 23:59
Zitat: |
Ich hoffe Tino ruft deswegen nicht gleich die Prozedur steinigen(catweasel); auf |
Ich glaube, diese Woche ist der Scheiterhaufen dran. ;-)
infomio - Mi 11.02.04 00:18
Scheiterhaufen? Genau den Einstieg habe ich gesucht!!!
Danke Mann!
:wink:
infomio - Mi 11.02.04 00:20
Gibts irgendein Tool, das das Anlegen von "XML-Tabellen" vereinfacht???
Möglichst in Deutsch und Freeware ??? Bin doch ne arme S...
catweasel - Mi 11.02.04 00: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
infomio - Mi 11.02.04 00: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!
catweasel - Mi 11.02.04 02: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
infomio - Mi 11.02.04 08:56
wie macht man dann einen update pder ein delete auf einen bestimmten Datensatz? Das wäre vorerst meine letzte Frage zum Thema XML!
:lol:
KidPaddle - Mi 11.02.04 10: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 - Mi 11.02.04 10: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 ???
catweasel - Mi 11.02.04 12:28
mit Update datest du alles up (die "Datenbank" an sich).
Catweasel
infomio - Mi 11.02.04 12:43
und wenn ich nicht alles updaten will ??? Ist dann Paradox mit einem BDE-Ersatz besser??? :?
catweasel - Mi 11.02.04 14: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 :roll:
Mach dir mal klar wie das Clientdataset arbeitet...
Catweasel
infomio - Mi 11.02.04 15:51
:lol: 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 ???
KidPaddle - Mi 11.02.04 16: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 - Mi 11.02.04 16:30
Danke Leute, ihr seid spitze!!! Jetzt geb ich Ruh!
Udontknow - Mi 11.02.04 17:11
Wer´s glaubt... :wink:
Ä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
dark_hawk - Do 20.03.08 18:13
Irgendwie hab ich Probleme mit:
Delphi-Quelltext
1: 2: 3: 4:
| Dataset.Edit; Dataset.FieldByName('Produkt').AsString := 'ab'; Dataset.FieldByName('Preis').AsString := '9,99€'; Dataset.Post; |
Wenn ich das auf meine xml-Datenbank anwende, werden NEUE Felder angelegt mit den NEUEN informationen.... ABER ich will die alten einfach überschreiben lassen, geht das nicht?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!