MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 14.09.2018, 11:08   #1
Micha678
Neuer Benutzer
Neuer Benutzer
Standard Acc2013 - XML in Access importieren

Hallo Freunde,

Einfaches xml in Access einzulesen funktioniert ja wunderbar. Verständlicherweise wird aber die Verschachtelung (Relationen) von Elementen beim Einlesen nicht erkannt.

also so etwas:
PHP-Code:

<Rechnung>
  <
Rechnungsnummer>1</Rechnungsnummer>
  <
Produkt>
    <
Produktnummer>1</Produktnummer>
    ...
  </
Produkt>
  <
Produkt>
    <
Produktnummer>2</Produktnummer>
    ...
  </
Produkt>
  <
Produkt>
    <
Produktnummer>3</Produktnummer>
    ...
  </
Produkt>
</
Rechnung
Anhand der vorgegebenen XML-Struktur ist klar zu welcher Rechnung jedes Produkt gehört. So benötige ich die Rechnungsnummer (Primärschlüssel) logischerweise auch in der Produkt-Tabelle in Access (als Fremdschlüssel).
Gibt es evt. irgendwelche Möglichkeiten für Zuweisungsregeln, die dann solch einen Fremdschlüssel beim Importieren automatisch mit übernehmen, ohne gleich mit VBA das XML überarbeiten zu müssen?
Falls nicht und VBA wäre nötig, kennt jemand eine Quelle, wo man solch eine Routine abkupfern kann? Diese Anforderung kommt ja sicherlich sehr oft vor.

Vielen Dank für die Hilfe,
Micha
Micha678 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.09.2018, 11:10   #2
markusxy
MOF Meister
MOF Meister
Standard

In letzter Zeit gab es viele Fragen dazu.
Hast du dir die Themen im Forum angesehen?

https://shop.minhorst.com/know-how/a...export-mit-vba

Edit: der Link ist nur für Export.
Import bezüglich VBA Funktion weiß ich nicht. Ansonsten halt DOM oder SAX oder VBA.

Geändert von markusxy (14.09.2018 um 11:14 Uhr).
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.09.2018, 17:45   #3
Micha678
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

genau, da geht es um Export. Mir geht es aber um den Import von XML in Access und da auch speziell darum "Relationen" übernehmen zu wollen.
Ja, hätte ich in den Betreff mit reinschreiben sollen.

Danke trotzdem
Micha
Micha678 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.09.2018, 09:19   #4
Nouba
MOF Guru
MOF Guru
Standard

Das schöne an dieser Frage ist, dass ein Helfer gefälligst selbst für XML-konforme Daten zu kümmern hat.
PHP-Code:

<Rechnung>
  <
Rechnungsnummer>8404180</Rechnungsnummer>
  <
Rechnungsdatum>2018-09-15</Rechnungsdatum>
  <
Empfaenger>Rainer Zufall</Empfaenger>
  <
Positionen>
    <
Produkt>
      <
Pos>1</Pos>
      <
Produktnummer>2968</Produktnummer>
      <
Menge>10</Menge>
      <
Einzelpreis>7.55</Einzelpreis>
      <
Steuersatz>0.19</Steuersatz>
    </
Produkt>
    <
Produkt>
      <
Pos>2</Pos>
      <
Produktnummer>4711</Produktnummer>
      <
Menge>5</Menge>
      <
Einzelpreis>14.5</Einzelpreis>
      <
Steuersatz>0.19</Steuersatz>
    </
Produkt>
    <
Produkt>
      <
Pos>3</Pos>
      <
Produktnummer>0944</Produktnummer>
      <
Menge>2</Menge>
      <
Einzelpreis>8.99</Einzelpreis>
      <
Steuersatz>0.19</Steuersatz>
    </
Produkt>
  </
Positionen>
</
Rechnung
Wenn Du mittels Transformation die Rechnungsnummer beim Produkt einfügst, sollten sich zwei Tabellen ergeben, die dann über die Rechnungsnummer verknüpft werden können.

Zum Vorgehen. Erstelle mit dem XML-Importassistenten zunächst nur die Tabellen und passe die Datentypen an. Danach wiederholst Du das Prozedere und wählst den Punkt an bestehende Tabellen anfügen aus.

Hier eine passende Transformation zu den Daten oben, welche im Assistent über den Knopf Tranformationen... auszuwählen bzw.zu laden ist:
PHP-Code:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <
xsl:output indent="yes"/>
  <
xsl:strip-space elements="*"/>

  <
xsl:template match="/">
    <
dataroot>
      <
xsl:apply-templates select="@*|node()"/>
    </
dataroot>
  </
xsl:template>

  <
xsl:template match="@*|node()">
    <
xsl:copy>
      <
xsl:apply-templates select="@*|node()"/>
    </
xsl:copy>
  </
xsl:template>

  <
xsl:template match="Positionen">
    <
xsl:apply-templates select="@*|node()"/>
  </
xsl:template>

  <
xsl:template match="Produkt">
    <
Produkt>
      <
Rechnungsnummer>
        <
xsl:value-of select="../../Rechnungsnummer"/>
      </
Rechnungsnummer>
      <
xsl:apply-templates select="@*|node()"/>
    </
Produkt>
  </
xsl:template>

</
xsl:stylesheet
Das ergibt dann eine Tabelle Rechnung mit diesem Inhalt:
Code:

----------------------------------------------------------------
|  Rechnungsnummer   |   Rechnungsdatum   |     Empfaenger     |
----------------------------------------------------------------
| 8404180            |         15.09.2018 | Rainer Zufall      |
----------------------------------------------------------------
und eine Tabelle Produkt mit diesem Inhalt:
Code:

----------------------------------------------------------------------------
| Rechnungsnummer | Pos | Produktnummer | Menge | Einzelpreis | Steuersatz |
----------------------------------------------------------------------------
| 8404180         |   1 | 2968          |    10 |      7,55 € |     19,00% |
----------------------------------------------------------------------------
| 8404180         |   2 | 4711          |     5 |     14,50 € |     19,00% |
----------------------------------------------------------------------------
| 8404180         |   3 | 0944          |     2 |      8,99 € |     19,00% |
----------------------------------------------------------------------------

Geändert von Nouba (15.09.2018 um 09:21 Uhr).
Nouba ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:03 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.