Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#4

Re: XML Daten in DB importieren

  Alt 24. Jan 2009, 09:11
...ich zeige dir einfach mal eine procedure
Delphi-Quellcode:
// Import XML Gebührenordnung
procedure TDMDB.XMLImportGE;
var
  AnzahlDS: Integer;
  A: Integer;
  I: Integer;
  Inhalt: TStringList;
begin
  Inhalt:= TStringList.Create;
  try
    JvSimpleXML1.FileName:= InstallPfad + 'GE.xml';
    AnzahlDS:= JvSimpleXML1.Root.Items.Item[1].Items.Count;
    if Start then
      begin
        Splash.JvXPProgressBar1.Max:= AnzahlDS;
        Splash.JvXPProgressBar1.Position:= 0;
        Splash.JvLabel1.Caption:= 'Import GebüH...';
      end;
    Splash.JvXPProgressBar1.Refresh;
    Splash.JvLabel1.Refresh;
    for A:= 0 to AnzahlDS -1 do
      begin
        try
          Inhalt.Clear;
          Splash.JvXPProgressBar1.Refresh;
          for I:= 0 to 2 do
            begin
              Inhalt.Add(JvSimpleXML1.Root.Items.Item[1].Items.Item[A].Items.Item[I].Value);
            end;
          ZQueryDiv.SQL.Text:= 'insert into GEBUH (GRUPPE,UNTERGRUPPE,TEXT,GEBUHID,LEISTUNG,NUMMER,ICON) values ';
          ZQueryDiv.SQL.Add('(:Gruppe,:Untergruppe,:Text,:GebuhID,:Leistung,:Nummer,:Icon)');
          ZQueryDiv.ParamByName('Gruppe').Value:= A+2;
          ZQueryDiv.ParamByName('Untergruppe').Value:= 1;
          ZQueryDiv.ParamByName('Text').Value:= Inhalt.Strings[2] + ' ' + Inhalt.Strings[1];
          ZQueryDiv.ParamByName('GebuhID').Value:= StrToInt(Inhalt.Strings[0]);
          ZQueryDiv.ParamByName('Leistung').Value:= Inhalt.Strings[1];
          ZQueryDiv.ParamByName('Nummer').Value:= Inhalt.Strings[2];
          ZQueryDiv.ParamByName('Icon').Value:= 2;
          ZQueryDiv.ExecSQL;
        except
          FehlerCode:= 'E422';
          Fehlerstatus:= False;
          Fehlertext:= 'Import der GebüH fehlgeschlagen. ';
          raise;
        end;
        if Start then Splash.JvXPProgressBar1.Position:= A;
        Splash.JvXPProgressBar1.Refresh;
      end;
  finally
    Inhalt.Free;
  end;
  try
    if FileExists(InstallPfad + 'GE.xml') then DeleteFile(InstallPfad + 'GE.xml');
  except
    FehlerCode:= 'E421';
    Fehlerstatus:= True;
    Fehlertext:= 'Löschen der Datei GE.xml fehlgeschlagen. ';
    raise;
  end;
  FGebuH.GEBUHEinlesen;
end;
Inhalt.Add(JvSimpleXML1.Root.Items.Item[1].Items.Item[A].Items.Item[I].Value); ...mit diesem Part mußt du dann etwas experimentieren entsprechend der Struktur deiner XML.

Der Ablauf ist im Prinzip folgender:
- 1. Schleife A -- Anzahl der Datensätze / Nodes
- 2. Schleife I -- Schreibt die Values des Nodes in eine StringList, I(MAX) entspricht der Menge der Values in der StringList (in diesem Falle 2..bei dir vieleicht anders)
- 3. Insert in DB mit den Werten der StringList
....usw.

viel Spaß...
  Mit Zitat antworten Zitat