Adressen aus dem Onlineshop importieren

Wer einen Onlineshop verwendet, verwaltet in der Regel auch die Kunden- und Bestelldaten auf dem Internetserver, auf dem sich die Shopsoftware befindet. Dennoch gibt es verschiedene Gründe, sich diese Daten auch auf dem Desktop verfügbar zu machen – und zwar nicht nur über das jeweilige Shop-Backend. Die Daten wollen schließlich weiterverwendet werden, beispielsweise für die Vorbereitung der Lieferung, den Rechnungsversand, die Prüfung des Rechnungseingangs et cetera. Leider liefert das Shopsystem die Daten meist nicht in der gewünschten Struktur. Schauen wir uns also anhand des Shopsystems Shopware an, wie wir uns die Daten gefügig machen.

Shopware ist eines der moderneren Shopsysteme. Ein Beispiel für einen Shop auf Basis dieses Systems ist etwa der Shop des André Minhorst Verlags, in dem Sie möglicherweise auch das Abonnement zu diesem Magazin bestellt haben (shop.minhorst.com). Da ich also selbst mit diesem System arbeite, ist es naheliegend, dieses Shopsystem als Beispiel für diesen Artikel heranzuziehen.

Zugriff verschaffen

Die optimale Lösung für den Zugriff auf die Daten des Shops erfolgt per ODBC. Wenn die Datenbanksoftware auf dem Server dafür freigeschaltet ist, können Sie die Tabellen des Shopsystems direkt in eine Datenbank auf dem lokalen Rechner einbinden.

Sie arbeiten dann mit den verfügbaren Tabellen, als ob diese sich direkt in der Datenbank befinden – mit dem Unterschied, dass der Zugriff vielleicht an der einen oder anderen Stelle etwas langsamer erfolgt.

Für den Zugriff sollte Ihr Provider die entsprechenden Einstellungen vornehmen und folgende Daten liefern können:

  • Adresse des Servers (zum Beispiel eine IP oder Domain)
  • Port (zum Beispiel 3306)
  • Name der Datenbank
  • Benutzername
  • Kennwort

Wenn Ihnen diese Informationen vorliegen, können Sie die Verbindung über den entsprechenden Assistenten von Access herstellen – wie im Beitrag RDBMS-Tabellen manuell verknüpfen (www.access-im-unternehmen.de/973). Oder Sie erledigen dies wie in den Beiträgen RDBMS-Tools: Verbindungen verwalten (www.access-im-unternehmen.de/976) und RDBMS-Tools: Tabellen verknüpfen (www.access-im-unternehmen.de/977) beschrieben mit zwei komfortablen Formularen.

Diese können Sie auch in Form eines Add-Ins einbinden – siehe RDBMS-Tools als Add-In (www.access-im-unternehmen.de/978). In diesem Beitrag nutzen wir in diesem Fall die letztere Variante.

Wenn Sie das Add-In aus dem genannten Beitrag installiert haben, fügen Sie mit dem Start des Add-Ins automatisch die für den Zugriff nötigen Tabellen tblVerbindungszeichenfolgen und tblTreiber an. Sie brauchen dann nur noch zunächst das Add-In RDBMS-Tools: Verbindungen verwalten aus dem Ribbon-Menü Datenbanktools|Add-Ins|Add-Ins auszuwählen. Dort geben Sie wie in Bild 1 die Verbindungsdaten ein und schließen den Dialog wieder.

Einstellen der Verbindungseigenschaften

Bild 1: Einstellen der Verbindungseigenschaften

Danach rufen Sie aus dem gleichen Ribbon-Menü den Eintrag RDBMS-Tools: Tabellen verknüpfen auf. Hier wählen Sie nun die soeben erstellte Verbindungszeichenfolge aus dem oberen Kombinationsfeld aus und klicken dann auf Aktualisieren. Das Formular zeigt nun alle Tabellen der gewählten Datenbank an.

Nach kurzem Durchsehen der Tabellen scheint klar zu sein, dass sich die Kundendaten in Tabellen befinden, die das Schlüsselwort User enthalten – zumindest gibt es keine Tabellen etwa namens Customer oder dergleichen. Also filtern wir das Listenfeld durch Eingabe des Wortes User in das Textfelder Filter und erhalten so die gesuchten Tabellen (s. Bild 2).

Herstellen der Verknüpfungen

Bild 2: Herstellen der Verknüpfungen

Wir markieren die Tabellen, die für uns interessant sein könnten, und erstellen durch einen Mausklick auf die Schaltfläche Tabellen verknüpfen entsprechende Verknüpfungen.

Wir wollen die Kunden inklusive Liefer- und Rechnungsanschrift in die Zieldatenbank importieren. Dazu schauen wir uns die Tabellen zunächst genauer im Beziehungsfenster an. Von den importierten Tabellen bleiben drei übrig, von denen eine die Grunddaten der Kunden enthält, eine die Rechnungsdaten und eine die Lieferdaten.

Um uns dies später beim Erstellen von Abfragen sparen zu können, fügen wir den Tabellen zwei Verknüpfungen hinzu (s. Bild 3).

Für den Kunden-Import interessante Tabellen

Bild 3: Für den Kunden-Import interessante Tabellen

Als Nächstes müssen wir herausfinden, wie die Daten in den drei Tabellen gespeichert werden. Im Shop des André Minhorst Verlags beispielsweise gibt man zunächst eine nicht näher spezifizierte Adresse ein (s. Bild 4). Darunter findet sich dann die Möglichkeit, anzugeben, dass die Lieferadresse von der Rechnungsadresse abweicht. Klickt man diese Option an, ist klar, dass die zuerst eingegebene Adresse der Rechnungsadresse entspricht, denn es erscheint nun ein eigener Bereich zur Eingabe der Lieferadresse. Gibt man zwei verschiedene Adressen für die Lieferung und die Rechnung an, ist der Fall also offensichtlich klar. Aber wo landen die Daten, wenn der Benutzer nur einen Satz Adressdaten einträgt – in der Tabelle s_user_billingaddress oder s_user_shippingaddress

Eingabe der Kundendaten im Shop

Bild 4: Eingabe der Kundendaten im Shop

Zielfelder für Adressdaten prüfen

Oder trägt die Shopsoftware die Adresse einfach gleich für beide Adressen ein Wir werden nicht um eine Prüfung dieses Sachverhalts herumkommen. Also erstellen wir eine neue Abfrage, welche die drei Tabellen s_user, s_user_shippingaddress und s_user_billingaddress aufnimmt. Die soeben im Beziehungen-Fenster hinzugefügten Beziehungen werden praktischerweise direkt in den Abfrageentwurf übernommen. Dann ziehen wir die benötigten Felder aus den drei Tabellen in das Entwurfsraster. Aus der Tabelle s_user entnehmen wir dabei nur die Felder id und email, aus den beiden übrigen Tabellen die üblichen Adressfelder (s. Bild 5).

Abfrage mit Liefer- und Rechnungsfeldern

Bild 5: Abfrage mit Liefer- und Rechnungsfeldern

Ein Wechsel in die Datenblattansicht liefert dann interessanterweise nicht den soeben frisch im Shop angelegten Datensatz. Warum das nicht Es kann eigentlich nur einen Grund geben: Da wir die Verknüpfungen mit in die Abfrage übernommen haben, kann diese nur Datensätze liefern, für die auch in allen beteiligten Tabellen Daten vorliegen.

Dies bedeutet also, dass mindestens eine der Tabellen keine Daten enthält und die eingebene Adresse wohl entweder nur in der Tabelle s_user_shipping-address oder —-s_-user_bil-lingaddress gelandet ist. Um dies zu prüfen, passen wir die Abfrage nochmals an, damit diese immer alle Datensätze anzeigt – unabhängig davon, ob alle Tabellen Daten enthalten. Klicken Sie dazu doppelt auf den ersten der beiden Verknüpfungspfeile und stellen Sie die nun erscheinenden Verknüpfungseigenschaften so ein, dass alle Datensätze der Tabelle s_user angezeigt werden und nur die passenden Datensätze aus der jeweils verknüpften Tabelle (s. Bild 6).

Einstellen der Verknüpfungseigenschaften

Bild 6: Einstellen der Verknüpfungseigenschaften

Anschließend erscheint der neu angelegte Kunde auch in der Abfrage in der Datenblattansicht. Dort wird schnell offensichtlich, dass eine gemeinsame Adresse für Lieferung und Rechnung einfach in der Tabelle s_user_billingaddress landet (s. Bild 7).

Abfrage mit den Adressdaten eines zu Testzwecken angelegten Kunden

Bild 7: Abfrage mit den Adressdaten eines zu Testzwecken angelegten Kunden

Abfrage an Zieltabelle anpassen

Nun folgt eine sehr interessante Aufgabe: Wir wollen die Abfrage qryUserBillingShipping so anpassen, dass sie genau der Datenstruktur der Zieltabelle in unserer Kundenverwaltung entspricht.

Dazu werfen wir nun zunächst einen Blick auf den Entwurf der Kundentabelle. Diese kann natürlich bei Ihnen oder bei Ihren Kunden ganz anders aussehen – aber es geht ja auch nur darum, beispielhaft den Import von Kundendaten von einem System ins andere zu demonstrieren.

Der Entwurf der Tabelle tblKunden sieht etwa wie in Bild 8 aus. Hier gibt es also einen Satz von Adressdaten, die, sofern keine separate Rechnungsadresse angegeben wird, als Liefer- und Rechnungsadresse genutzt wird.

Zieltabelle für den Import der Kundendaten

Bild 8: Zieltabelle für den Import der Kundendaten

Liegt hingegen eine Rechnungsadresse vor, nehmen die einfachen Felder die Lieferadresse auf.

Dummerweise ist es in den Kundentabellen im Shop genau andersherum: Dort wird die zusätzliche Adresse als Lieferadresse gespeichert. Aber das ist kein Problem – wir sind ja anpassungsfähig.

Verschiedene Fälle

Der einfachste Fall ist, dass der Kunde im Shop nur eine einzige Adresse als Liefer- und Rechnungsadresse angegeben hat. In diesem Fall können wir die Felder aus der Tabelle s_user_billingaddress einfach in die Felder Firma, AnredeID, Vorname et cetera der Tabelle tblKunden importieren.

Wenn der Kunde allerdings auch noch eine abweichende Adresse angegeben hat, sollen die Werte der Tabelle s_user_billingaddress in den Feldern Firma_Rechnung, AnredeID_Rechnung, Vorname_Rechnung und so weiter landen und die Werte der Tabelle s_user_shippingaddress in den Feldern Firma, AnredeID, Vorname et cetera.

Wir müssen also in der Abfrage, welche die Felder wie in der Zieltabelle abbilden soll, abfragen, ob die Tabelle s_user_shipping vorhanden ist, und die Daten dann mit entsprechenden IIf-Statements variieren.

Wie aber wollen wir die Abfrage überhaupt so gestalten, dass diese wie die Tabelle tblKunden aufgebaut ist Das ist einfach: Wir benennen die entsprechenden Felder beziehungsweise die Ausdrücke, welche die Werte liefern, entsprechend den Feldern der Tabelle tblKunden um.

Länder zur Abfrage hinzufügen

Die Abfrage qryUserBillingShipping enthält das Feld countryID der beiden Tabellen s_user_shippingaddress und s_user_billingaddress. Dieses liefert nur eine Zahl, da dieses Feld mit einer Lookuptabelle namens s_core_countries verknüpft ist, welche die Länderbezeichnungen zu den Zahlenwerten aus countryID liefert. Diese würden wir natürlich gern noch in die Abfrage einbeziehen, um nicht alle Ländercodes separat per verschachteltem IIf ermitteln zu müssen.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar