Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

Bitte teilen Sie uns Ihre Anrede, Ihren Namen und Ihre E-Mail-Adresse mit:

Anrede:
Vorname:
Nachname:
E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 2/2018.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

DHL-Versand vorbereiten

Ende Februar 2018 hat DHL die Unterstützung der Intraship-Schnittstelle beendet. Das heißt, dass wir unsere DHL-Etiketten nun auf eine andere Weise erstellen müssen. Für Datenbank-Experten kein Problem: Wir benötigen nur eine Beschreibung der gewünschten Schnittstelle und liefern dann die Daten in der gewünschten Form.

Abkündigung von Intraship

Wer DHL-Kunde ist und bisher seine Paket-Etiketten mit Intraship erstellt hat, ist von DHL per Mail hinreichend über die anstehende Einstellung dieses Services informiert worden. Wer das lange genug ignoriert hat, hat Anfang März 2018 zwar noch den Link Versenden (Intraship) auf der Startseite des Geschäftskundenportals gesehen (siehe Bild 1), aber hinter dem Link landete man dann auf einer Seite, auf der die Anmeldung nicht mehr funktionierte.

Das Versenden per Intraship funktioniert nicht mehr.

Bild 1: Das Versenden per Intraship funktioniert nicht mehr.

Stattdessen soll man nun die Benutzeroberfläche nutzen, die sich direkt über den Link Versenden öffnen lässt und der die möglichen Dienste in übersichtlicher Form darstellt (siehe Bild 2).

Neue Benutzeroberfläche für den Versand von DHL-Paketen

Bild 2: Neue Benutzeroberfläche für den Versand von DHL-Paketen

Was aber ändert sich nun für uns, wenn wir bis dahin unsere Paket-Etiketten mit Intraship erstellt haben? Zunächst einmal können wir das alte Export-Format, das wir im Beitrag Versandetiketten mit DHL-Intraship (www.access-im-unternehmen.de/991) vorgestellt haben, verabschieden. Das Format war nicht gerade übersichtlich, daher ist der Wechsel zu einem neuen Format vielleicht gar nicht schlecht. Dafür programmieren wir den Export nun komplett neu. Wie die Export-Datei aussehen muss, finden wir im Anschluss heraus.

Dazu klicken wir zunächt auf den Link Sendungsdaten importieren, was den Dialog aus Bild 3 öffnet. Hier finden wir bereits die Möglichkeit, eine Vorlage auszuwählen sowie eine Schaltfläche zum Auswählen der zu importierenden CSV-Datei. Wir benötigen allerdings Informationen darüber, wie die CSV-Datei aufgebaut sein soll.

Maske zum Hochladen der CSV-Datei

Bild 3: Maske zum Hochladen der CSV-Datei

Klicken Sie hier im Text auf den Link > Vorlagen, öffnet sich der Dialog aus Bild 4.

Auswahl einer CSV-Vorlage

Bild 4: Auswahl einer CSV-Vorlage

Wenn wir uns nun beispielsweise die Vorlage DHL Vorlage Sendungsdatenimport ansehen, finden wir eine Definition der Vorlage vor, die im oberen Teil zunächst allgemeine Formatierungsvorgaben liefert (siehe Bild 5).

Aussehen einer der vorgefertigten Vorlagen

Bild 5: Aussehen einer der vorgefertigten Vorlagen

Dort legen Sie beispielsweise fest, welches Trennzeichen zwischen den Inhalten der einzelnen Spalten angegeben werden soll, welches Zeichen als Dezimalzeichen zum Einsatz kommt und wie Texte eingefasst werden – hier etwa durch Anführungszeichen. Außerdem legen Sie den Zeichensatz (hier ISO 8859-1) und das Datumsformat (TT.MM.JJ) fest.

Darunter befinden sich alle Felder, die DHL überhaupt für den Versand einer Lieferung verwenden kann

Hier wurde für alle zu verwendenden Eigenschaften die Spaltenüberschrift der zu importierenden CSV-Datei angegeben.

Nach kurzem Überfliegen der angegebenen Spaltenüberschriften stellen wir fest, dass wir für unsere Zwecke viel weniger Spalten zur Verfügung stellen wollen. Dazu müssen wir eine neue Vorlage anlegen.

Neue Vorlage anlegen

Eine neue Vorlage legen wir ausgehend von der Seite Vorlagen für Sendungsdatenimport an, indem wir dort auf den Link Neue Import-Vorlage anlegen >> klicken.

Hier finden wir die gleiche Ansicht wie in der zuvor betrachteten Vorlage vor – mit dem Unterschied, dass die rechte Spalte noch nicht mit den Spaltennamen der von uns gelieferten CSV-Datei gefüllt sind.

Das kann auch nicht der Fall sein, da das System unsere CSV-Datei ja noch gar nicht kennt.

Um das zu ändern, müssten wir auch zunächst einmal eine CSV-Datei erstellen, denn diese können wir dann unter dem Punkt 2. Hochladen der Musterdatei zum Auslesen der Inhalte auswählen und mit einem Klick auf den Link Datei analysieren >> untersuchen lassen (siehe Bild 6).

Hochladen der Musterdatei

Bild 6: Hochladen der Musterdatei

Bestehende Lösung erweitern

Im Beitrag Bestellverwaltung mit Versand (www.access-im-unternehmen.de/993) haben wir bereits eine kleine Lösung programmiert, die uns per Mausklick einen CSV-Export für die bis vor kurzem aktive Schnittstelle Intraship erzeugt hat. Diese wollen wir nun aufgreifen und so anpassen, dass wir einen Export erhalten, den wir mit der neuen Schnittstelle nutzen können. In dieser Lösung haben wir mit einigen Klassen gearbeitet, von denen jede zum Zusammenstellen einer Zeile eines Satzes für eine DHL-Lieferung diente.

Unter Intraship bestand die CSV-Datei nämlich nicht nur aus einer Zeile je Datensatz, sondern die Daten wurden auf mehrere Zeilen aufgeteilt. Das ist nun natürlich hinfällig – die neue Schnittstelle nimmt nur noch eine Zeile je Datensatz an. Das heißt, dass wir die in der bestehenden Lösung verwendeten Klassen auch mehr oder weniger aufgeben können.

Jede dieser Klassen stellte einige Eigenschaften zur Verfügung, mit denen die gewünschten Werte etwa aus einem Datensatz der Datenbank gefüllt werden konnten. Außerdem lieferten die Klassen für die Eigenschaft Satz die komplette Zeile mit den Daten dieser Klasse.

Klasse zum Zusammenstellen von Datensätzen für die CSV-Datei

Eine solche Klasse wollen wir nun für die neuen Daten auch erstellen.

Wir arbeiten uns dabei durch die einzelnen Zeilen der Liste aus Bild 7 durch und berücksichtigen dabei zunächst nur die offensichtlich notwendigen Felder.

Freie Felder zum Zuweisen der Spalten der Vorlage

Bild 7: Freie Felder zum Zuweisen der Spalten der Vorlage

Hier stellt sich nun die Frage, wie wir am schnellsten zum Ziel kommen. Die bisherige Lösung bestand aus einer Hauptklasse, welche die unterschiedlichen Kategorien von Informationen wie Sendung, Benachrichtigungen, Absender, Empfänger und so weiter in einzelnen Klassen behandelt hat. Auf diese Weise war das Zusammenstellen leicht zu programmieren.

Wollen wir auf diesen Klassen aufsetzen und diese so ändern, dass diese die Daten nun so zurückliefern, wie wir sie für den Import benötigen? Oder legen wir eine komplett neue Klasse an? Wir entscheiden uns, die einmal gemachte Arbeit als Grundlage für den neuen Export zu nutzen und passen die bestehenden Klassen an.

Für die Hauptklasse clsDPEEMain, welche die Daten aus den Unterklassen clsDPEEShipment, clsDPEESender, clsDPEEReceiver, clsDPEEItem und clsDPEENotification zusammenstellt, brauchen wir den Code zunächst nur so zu ändern, dass die Daten, die zuvor in jeweils einer neuen Zeile aneinandergehängt wurden, nun in einer Zeile landen. Die neue Version der Eigenschaft Satz, welche die Ergebnisse der übrigen Klassen zusammensetzt, sieht nun wie folgt aus:

Public Property Get Satz() As String
     Dim strSatz As String
     strSatz = strSatz & m_DPEEShipment.Satz
     strSatz = strSatz & m_DPEESender.Satz
     strSatz = strSatz & m_DPEEReceiver.Satz
     strSatz = strSatz & m_DPEEItem.Satz
     strSatz = strSatz & m_DPEENotification.Satz
     Satz = strSatz
End Property

Geändert hat sich hier im Wesentlichen, dass wir die von der Satz-Eigenschaft der verschiedenen Klassen gelieferten Daten nicht mehr durch das Steuerzeichen vbCrLf jeweils in eine neue Zeile schreiben, sondern diese einfach aneinanderhängen. Wenn wir nun nichts weiter ändern und die Schaltfläche Versand vorbereiten im Formular frmBestellungsdetails aufrufen (siehe Bild 8), legen wir eine CSV-Datei mit der folgenden Zeichenfolge an:

Das Formular frmBestellungsdetails

Bild 8: Das Formular frmBestellungsdetails

|DPEE-SHIPMENT|EPN|20180306|||||1||||||||||||||||||EUR|||||||01|||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||DPEE-SENDER|6275498028|André Minhorst Verlag|
|AndréMinhorst|Borkhofer Str.|17||47137|Duisburg|DE||andre@minhorst.com|0203/12121212|
|||||||||||||||||||||DPEE-RECEIVER|Herr André Minhorst|André Minhorst Verlag|||
Herr André Minhorst|Borkhofer Str.|17||47137|Duisburg|DE||andre@minhorst.com|
||||||||||||||||||DPEE-ITEM||||||PK|||DPEE-NOTIFICATION||andre@minhorst.com|||

Hier fällt zunächst auf, dass wir als Trennzeichen das Pipe-Zeichen (|) und nicht das Semikolon verwenden. Müssen wir das im Code ändern? Nein, wir können auch einfach die Einstellung der noch anzulegenden Vorlage auf der DHL-Webseite auf dieses Zeichen ändern. Außerdem finden wir hier noch die Schlüsselwörter vor, die in der ursprünglichen Version jeweils den Inhalt einer Zeile markiert haben, also DPEE-SHIPMENT, DPEE-SENDER und so weiter. Diese können wir auch noch entfernen. Außerdem müssen wir, damit wir die Spalten über ihren Eigenschaftsnamen zur Vorlage zuweisen können, noch eine Zeile mit den Spaltenüberschriften vorbereiten – auch diese durch das Pipe-Zeichen voneinander getrennt.

Als Erstes wollen wir die Schlüsselwörter entfernen. Dies erledigen wir jeweils in den Public Property Satz-Eigenschaften der fünf Klassen clsDBEEItem, clsDBEE­Notification, clsDBEESender, clsDBEEReceiver und clsDBEEShipment.

In der Methode Satz der Klasse clsDPEEItem müssen wir dazu nur die Zeile entfernen, die den Text DPEE-ITEM| zur Variablen strSatz hinzufügt und die wir nachfolgend vorerst auskommentiert haben. Gleiches erledigen wir mit der Zeile, welche den Wert der Variablen m_Ordnungsnummer hinzufügt. Diese haben wir in der Methode Satz der Klasse clsDPEEMain zwar schon nicht mehr an die einzelnen Klassen übergeben, weshalb diese im obigen Beispiel für die Ausgabe nicht mehr auftauchte, aber wir wollen auch noch die leere Stelle in der Ausgabe entfernen:

Public Property Get Satz() As String
     Dim strSatz As String
     'strSatz = strSatz & m_Ordnungsnummer & "|"
     'strSatz = strSatz & "DPEE-ITEM|"
     strSatz = strSatz & m_GewichtDesPackstueckesInKg & "|"
     strSatz = strSatz & m_LaengeDesPackstueckesInCm & "|"
     strSatz = strSatz & m_BreiteDesPackstueckesInCm & "|"
     strSatz = strSatz & m_HoeheDesPackstueckesInCm & "|"
     strSatz = strSatz & m_PackstueckBeschreibung & "|"
     strSatz = strSatz & m_PackartKollitraeger & "|"
     strSatz = strSatz & m_Packstueckreferenz & "|"
     strSatz = strSatz & m_Referenznummer & "|"
'    strSatz = Left(strSatz, Len(strSatz) - 1)
     Satz = strSatz
End Property

Schließlich entfernen wir auch noch die Zeile, die das abschließende Pipe-Zeichen entfernt – immerhin wollen wir später alle fünf Sätze in eine Zeile schreiben, wo wir auch das Trennzeichen zwischen dem letzten Element des vorhergehenden und dem ersten Element des folgenden Satzes ein Trennzeichen benötigen.

Auf die gleiche Art und Weise bearbeiten wir die Methode Satz der übrigen Klassen. Damit sieht die Ausgabe schon etwas schlanker aus:

EPN|20180306|||||1||||||||||||||||||EUR|||||||01|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6275498028|André Minhorst Verlag||AndréMinhorst|Borkhofer Str.|17||47137|Duisburg|DE||andre@minhorst.com|
0203/12121212|||||||||||||||||||||Herr André Minhorst|André Minhorst Verlag|||Herr André Minhorst|Borkhofer
Str.|17||47137|Duisburg|DE||andre@minhorst.com|||||||||||||||||||||||PK|||andre@minhorst.com|||

Spaltenüberschrift erstellen

Nun wollen wir die Spaltenüberschriften hinzufügen. Das ist eine reine Fleißarbeit. Wir schnappen uns dazu zum Beispiel die folgenden Anweisungen der Satz-Methode der Klasse clsDPEEItem:

strSatz = strSatz & m_GewichtDesPackstueckesInKg & "|"
strSatz = strSatz & m_LaengeDesPackstueckesInCm & "|"
strSatz = strSatz & m_BreiteDesPackstueckesInCm & "|"
strSatz = strSatz & m_HoeheDesPackstueckesInCm & "|"
strSatz = strSatz & m_PackstueckBeschreibung & "|"
strSatz = strSatz & m_PackartKollitraeger & "|"
strSatz = strSatz & m_Packstueckreferenz & "|"
strSatz = strSatz & m_Referenznummer & "|"

Dann entfernen wir die Zeilenumbrüche, den vorderen Teil bis zum Unterstrich (strSatz = strSatz & m_) lassen hinten auch nur das Pipe-Zeichen über. Das Ergebnis sieht dann für die erste Klasse wie folgt aus:

GewichtDesPackstueckesInKg|LaengeDesPackstueckesIn­Cm|Breite­DesPackstueckesInCm|HoeheDesPackstueckesIn­­Cm|
Packstueck­Beschreibung|PackartKollitraeger|Packstueck­referenz|Referenznummer|

Statt dieses Zeichenkette zu speichern und bei Bedarf bereitzustellen, können wir auch den Klassen jeweils eine Eigenschaft namens Kopfzeile hinzufügen, welche am Beispiel der Klasse clsDPEEItem wie folgt aussieht:

Public Property Get Kopfzeile() As String
     Dim strKopf As String
     strKopf = strKopf & "GewichtDesPackstueckesInKg|"
     strKopf = strKopf & "LaengeDesPackstueckesInCm|"

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

Bitte teilen Sie uns Ihre Anrede, Ihren Namen und Ihre E-Mail-Adresse mit:

Anrede:
Vorname:
Nachname:
E-Mail:

© 2003-2018 André Minhorst Alle Rechte vorbehalten.