AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Konvertierung Access --> XML
Thema durchsuchen
Ansicht
Themen-Optionen

Konvertierung Access --> XML

Ein Thema von R2009 · begonnen am 17. Nov 2009 · letzter Beitrag vom 17. Nov 2009
Antwort Antwort
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#1

Konvertierung Access --> XML

  Alt 17. Nov 2009, 12:50
Datenbank: Access • Version: 2003 • Zugriff über: ADO, Tclientdataset
Hi DP'ler,

hier das vorläufige Ergebnis (ist noch nicht fertig) meiner Bemühungen eine Access Datenbank in ein XML Dokument zu überführen.
Ich habe das Ganze weitgehend universell geschrieben, sodass man, im Prinzip, jede Access Datenbank damit umwnandeln kann.
b:=true dient nur als Platzhalter für die fehlenden Typdefinitionen.
Realisiert wurde das Ganze unter Verwendung von Tclientdataset.

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var j:integer;b:boolean;ClientDataSet:TClientDataSet;
begin
    ClientDataSet:=TClientDataSet.Create(self);
    If fileexists('d:\Transfer.xml') then DeleteFile('d:\Transfer.xml');
    ClientDataSet.FileName:='';
    begin
      For j:=0 to ADOTable1.FieldList.Count-1 do
       case ADOTable1.FieldList.Fields[j].DataType of
       ftUnknown: b:=true;
       ftString: ClientDataSet.FieldDefs.Add(ADOTable1.FieldList.Fields[j].FieldName, ftString, ADOTable1.FieldList.Fields[j].Size, FALSE);
       ftWideString: ClientDataSet.FieldDefs.Add(ADOTable1.FieldList.Fields[j].FieldName, ftString, ADOTable1.FieldList.Fields[j].Size, FALSE);
       ftInteger: ClientDataSet.FieldDefs.Add(ADOTable1.FieldList.Fields[j].FieldName, ftInteger, ADOTable1.FieldList.Fields[j].Size, FALSE);
       ftSmallint: b:=true;
       ftCurrency: b:=true;
       ftAutoInc: ClientDataSet.FieldDefs.Add(ADOTable1.FieldList.Fields[j].FieldName, ftInteger, 0, FALSE);
       ftWord: b:=true;
       ftFloat: b:=true;
       ftBoolean: b:=true;
       ftBCD: b:=true;
       ftTime: b:=true;
       ftDate: b:=true;
       ftDateTime: b:=true;
       ftBytes: b:=true;
       ftVarBytes: b:=true;
       ftBlob: b:=true;
       ftMemo: b:=true;
       ftGraphic: b:=true;
       ftFmtMemo: b:=true;
       ftParadoxOle: b:=true;
       ftDBaseOle: b:=true;
       ftTypedBinary:b:=true;
       ftCursor: b:=true;
       ftFixedChar: b:=true;
       ftLargeint: b:=true;
       ftADT: b:=true;
       ftArray: b:=true;
       ftReference: b:=true;
       ftDataSet: b:=true;
       ftOraBlob: b:=true;
       ftOraClob: b:=true;
       ftVariant: b:=true;
       ftInterface: b:=true;
       ftIDispatch: b:=true;
       ftGuid: b:=true;
       ftTimeStamp: b:=true;
       ftFMTBcd: b:=true;
         else
         Begin
           b:=false;
         End;
      end;
   end;
  // Dataset aktvieren
  ClientDataSet.CreateDataset;
  ClientDataSet.Open;
  ClientDataSet.LogChanges:=false;
  ADOTable1.First;
  while not ADOTable1.eof do
    begin
      ClientDataSet.Append;
      For j:=0 to ADOTable1.FieldList.count-1 do //ADOTable1.FieldList.Fields[j].FieldName
        begin
          ClientDataSet.FieldByName(ADOTable1.FieldList.Fields[j].FieldName).AsVariant := ADOTable1.FieldValues[ADOTable1.FieldList.Fields[j].FieldName];
        end;
      ADOTable1.next;
     end;
  ClientDataSet.SaveToFile('d:\Transfer.xml');
  ClientDataSet.Close;
  ClientDataSet.Free;
  ADOTable1.First;
end;
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#2

Re: Konvertierung Access --> XML

  Alt 17. Nov 2009, 13:53
Warum Platzhalter? (wo du ja noch nichtmal das B auswertest)
Delphi-Quellcode:
ftUnknown: ;
ftString: ClientDataSet.FieldDefs.Add(...
ftWideString: ClientDataSet.FieldDefs.Add(...
ftInteger: ClientDataSet.FieldDefs.Add(...
ftSmallint: ;
ftCurrency: ;
ftAutoInc: ClientDataSet.FieldDefs.Add(...
ftWord: ;
ftFloat: ;
ftBoolean: ;
ftBCD: ;
ftTime: ;
ftDate: ;
ftDateTime: ;
ftBytes: ;
ftVarBytes: ;
ftBlob: ;
ftMemo: ;
ftGraphic: ;
ftFmtMemo: ;
ftParadoxOle: ;
ftDBaseOle: ;
ftTypedBinary: ;
ftCursor: ;
ftFixedChar: ;
ftLargeint: ;
ftADT: ;
ftArray: ;
ftReference: ;
ftDataSet: ;
ftOraBlob: ;
ftOraClob: ;
ftVariant: ;
ftInterface: ;
ftIDispatch: ;
ftGuid: ;
ftTimeStamp: ;
ftFMTBcd: ;
else {Fehler oder was weiß ich .... kommt man überhaut hier jemals vorbei?};
Wobei ich es wohl eher etwa so lösen würde.
Hier hätte man auch 'ne bessere Kontrolle über alles, welches schon implementiert ist.
Delphi-Quellcode:
//ftUnknown: ;
ftString: ClientDataSet.FieldDefs.Add(...
ftWideString: ClientDataSet.FieldDefs.Add(...
ftInteger: ClientDataSet.FieldDefs.Add(...
//ftSmallint: ;
//ftCurrency: ;
ftAutoInc: ClientDataSet.FieldDefs.Add(...
//ftWord: ;
//ftFloat: ;
//ftBoolean: ;
//ftBCD: ;
//ftTime: ;
//ftDate: ;
//ftDateTime: ;
//ftBytes: ;
//ftVarBytes: ;
//ftBlob: ;
//ftMemo: ;
//ftGraphic: ;
//ftFmtMemo: ;
//ftParadoxOle: ;
//ftDBaseOle: ;
//ftTypedBinary: ;
//ftCursor: ;
//ftFixedChar: ;
//ftLargeint: ;
//ftADT: ;
//ftArray: ;
//ftReference: ;
//ftDataSet: ;
//ftOraBlob: ;
//ftOraClob: ;
//ftVariant: ;
//ftInterface: ;
//ftIDispatch: ;
//ftGuid: ;
//ftTimeStamp: ;
//ftFMTBcd: ;
else Raise Exception.Create('not implemented');
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Konvertierung Access --> XML

  Alt 17. Nov 2009, 14:24
Ja ja ist ja gut,

das b wird vielleicht mal ausgewertet und ich bin noch mittendrin!
(und ausserdem bin ich ein fauler Mensch! Deshalb sind die noch da)
Hab das b benutzt um einen Platzhalter für den Debugger zu haben. Ohne Platzhalter
springt der Debugger einfach über die entsprechenden Einträge weg.
Da die Zuordnung Datentypen Access --> XML nicht so ganz trivial ist hab ich das damit versucht rauszufinden.


Grüsse
Rainer
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz