| Autor |
Beitrag |
sunspeed
      
Beiträge: 99
Win 95, Win 98,WinME,W2k Win XP
Delphi 4 Pers,Delphi 7 Prof, Delphi 2005 Arch, VS 2003, VS 2005, C#
|
Verfasst: Fr 20.05.05 16:53
Guten Abend,
ich habe ein kleineres Problem, allerdings find ich die Lösung nicht.
Ich habe ein Programm, das mir aus Outlook die Adressen ausliest,
über die Funktion einer Klasse (saveThisKontakt) wird der Name, Nachname usw.
welche an die Klasse übergeben wurden, gespeichert.
Dies will ich über eine TClientDataSet Komponente machen.
Es funktioniert alles, bis auf das Posten in die XML Datei.
Mein Code für das Zuweisen und Speichern:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| cdsKontakt:=TClientDataSet.Create(owner); try cdsKontakt.FileName:=extractfilepath(paramstr(0)) + julyaniDBDirKontakte; if not fileexists(cdsKontakt.FileName) then createKontakte(owner);
cdsKontakt.LoadFromFile; cdsKontakt.Open; cdsKontakt.Append; if length(fTitel)=0 then fTitel:='Frau/Herr'; if length(fName)=0 then fName:='nicht gefunden'; if length(fNachname)=0 then fNachname:='nicht gefunden'; if length(fEmail)=0 then fEmail:='nicht gefunden';
cdsKontakt.FieldByName('TITEL').AsString:=fTitel; cdsKontakt.FieldByName('NAME').AsString:=fName; cdsKontakt.FieldByName('NACHNAME').AsString:=fNachname; cdsKontakt.FieldByName('EMAIL').AsString:=fEmail; cdsKontakt.Post; finally cdsKontakt.Free; end; |
Bitte helft mir, ich bin um jeden Beitrag froh.
Vielen herzlichen Dank im Voraus.
Gruß sunspeed
_________________ Tiefe Brunnen muss man graben, wenn man klares Wasser will.
Tiefe Wasser sind nicht still!
|
|
feivel3333
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: Fr 20.05.05 17:22
Hi,
ich kenne zwar deine Datenbank nicht, die du dort benutzt, aber wenn ich in eine Datenbank schreibe, dann muss ich immer erst folgendes tun:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| try Edit; FieldByName( 'FELD1' ).Text := 'ÄÄAhm'; Post; except ... end; |
Wobei hier das EDIT entscheident ist, denn wenn ich die Datenbank nicht in den Edit-Modus versetze, dann kann ich nicht reinschreiben. Vielleicht ist es auch der Fehler bei dir?
Gruß, Feivel
|
|
KidPaddle
      
Beiträge: 351
WinXP,Linux
D7 Prof, XE7
|
Verfasst: Sa 21.05.05 09:08
Er hat ja zuvor cdsKontakt.Append; aufgerufen, also daran liegt es nicht. Aber die Fehlermeldung besagt, das ein Feld, welches ein Required - Flag hat. Wie sieht den die XML - Datei aus, die geladen wird?
Gruß
KidPaddle
|
|
sunspeed 
      
Beiträge: 99
Win 95, Win 98,WinME,W2k Win XP
Delphi 4 Pers,Delphi 7 Prof, Delphi 2005 Arch, VS 2003, VS 2005, C#
|
Verfasst: Sa 21.05.05 09:11
Danke für deinen Beitrag, allerdings will ich keinen bereits vorhandenen Datensatz "editieren" sondern einen Neuen anhängen.
Leider funktioniert das mit Edit trotzdem nicht.
Auf die Frage welche Datenbank ich benutze:
- Es ist keine wirkliche Datenbank sondern ein XML File das wie eine Datenbank behandelt wird. Sprich es gibt Felder mit Eigenschaft, einen Index (AutoInc) usw.
Aber das ganze wird nicht in eine Datenbank geklopft sondern in ein XML File.
Gruß Sunspeed
|
|
sunspeed 
      
Beiträge: 99
Win 95, Win 98,WinME,W2k Win XP
Delphi 4 Pers,Delphi 7 Prof, Delphi 2005 Arch, VS 2003, VS 2005, C#
|
Verfasst: Sa 21.05.05 09:15
Die XML Datei sieht folgendermaßen aus:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| <?xml version="1.0" standalone="yes" ?> - <DATAPACKET Version="2.0"> - <METADATA> - <FIELDS> <FIELD attrname="ID" fieldtype="i4" required="true" SUBTYPE="Autoinc" /> <FIELD attrname="TITEL" fieldtype="string" WIDTH="10" /> <FIELD attrname="NAME" fieldtype="string" WIDTH="100" /> <FIELD attrname="NACHNAME" fieldtype="string" WIDTH="150" /> <FIELD attrname="EMAIL" fieldtype="string" WIDTH="300" /> </FIELDS> <PARAMS AUTOINCVALUE="1" /> </METADATA> <ROWDATA /> </DATAPACKET> |
Ich weiß dass das Feld ID required ist. Meine Idee wäre noch, dass ich die Eigenschaft
AutoIncFields:Boolean vom cdsKontakt auf true setzen muss, ich komm aber leider momentan nicht dazu.
Gruß und vielen herzlichen Dank für eure Hilfe.
Sunspeed
|
|
sunspeed 
      
Beiträge: 99
Win 95, Win 98,WinME,W2k Win XP
Delphi 4 Pers,Delphi 7 Prof, Delphi 2005 Arch, VS 2003, VS 2005, C#
|
Verfasst: Sa 21.05.05 09:54
So, ich hab das jetzt ausprobiert, das heißt nicht AutoIncFields sondern AutoCalcFields und hat leider nix mit dem AutoInc Typ zu tun.
Wenns gar nicht anders geht, dann bau ich mir nen Index Hash zusammen und speicher den mit rein.
Man wird sehen.
Also nochmals Danke
wenn ihr noch irgendwelche Ideen habt, dann schreibt sie mir bitte.
Gruß
Sunspeed
|
|
|