ich möchte eine lokale DB im xml-Format mit TBufDataset realisieren.
Elementar ist dabei:
- Daten aus xml-Datei lesen
- Daten in xml-Datei speichern
Nach langem Experimentieren folgender Code, der zumindest bei mir funktioniert.
Einlesen:
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
DBPfad := 'c:\lazarus-projekte\DB-Test\Stahlsorten.xml';
//TBufDataset
if FileExists(DBPfad) then
cdStahlsorten.LoadFromFile(DBPfad,dfXML)
else
cdStahlsorten.CreateDataset;
end;
Code: Alles auswählen
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
var
AStream: TFileStream;
DPReader: TXMLDatapacketReader;
begin
try
AStream := TFileStream.Create(DBPfad,fmCreate);
DPReader := TXMLDatapacketReader.Create(cdStahlsorten,AStream);
cdStahlsorten.SetDatasetPacket(DPReader);
cdStahlsorten.SaveToStream(AStream,dfXML);
finally
AStream.Free;
cdStahlsorten.Close;
end;
end;
- Weise TBufDataset.FileName nichts zu, schon gar nicht zur Design-Zeit.
Fragen an die Experten:
- Warum muss ich beim Speichern diesen "Umweg" gehen, wo doch TBufDataset auch eine Methode SaveToFile hat, wo man
das DataPacketFormat als Parameter übergeben kann? SaveToFile funktioniert bei mir mit dfXML nicht. Oder mache ich was falsch?
- Was macht das TBufDataset, wenn man FileName zuweist?
Geronimo