{"id":55001127,"date":"2018-04-01T00:00:00","date_gmt":"2020-05-13T21:19:13","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1127"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"DHLVersand_vorbereiten","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/DHLVersand_vorbereiten\/","title":{"rendered":"DHL-Versand vorbereiten"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg06.met.vgwort.de\/na\/0dddbf94295f4d53af6d29fac5480da9\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Ende Februar 2018 hat DHL die Unterst&uuml;tzung der Intraship-Schnittstelle beendet. Das hei&szlig;t, dass wir unsere DHL-Etiketten nun auf eine andere Weise erstellen m&uuml;ssen. F&uuml;r Datenbank-Experten kein Problem: Wir ben&ouml;tigen nur eine Beschreibung der gew&uuml;nschten Schnittstelle und liefern dann die Daten in der gew&uuml;nschten Form.<\/b><\/p>\n<h2>Abk&uuml;ndigung von Intraship<\/h2>\n<p>Wer DHL-Kunde ist und bisher seine Paket-Etiketten mit Intraship erstellt hat, ist von DHL per Mail hinreichend &uuml;ber die anstehende Einstellung dieses Services informiert worden. Wer das lange genug ignoriert hat, hat Anfang M&auml;rz 2018 zwar noch den Link <b>Versenden (Intraship) <\/b>auf der Startseite des Gesch&auml;ftskundenportals gesehen (siehe Bild 1), aber hinter dem Link landete man dann auf einer Seite, auf der die Anmeldung nicht mehr funktionierte. <\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_001.png\" alt=\"Das Versenden per Intraship funktioniert nicht mehr.\" width=\"549,6265\" height=\"234,2213\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Das Versenden per Intraship funktioniert nicht mehr.<\/span><\/b><\/p>\n<p>Stattdessen soll man nun die Benutzeroberfl&auml;che nutzen, die sich direkt &uuml;ber den Link Versenden &ouml;ffnen l&auml;sst und der die m&ouml;glichen Dienste in &uuml;bersichtlicher Form darstellt (siehe Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_002.png\" alt=\"Neue Benutzeroberfl&auml;che f&uuml;r den Versand von DHL-Paketen\" width=\"649,559\" height=\"487,8239\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Neue Benutzeroberfl&auml;che f&uuml;r den Versand von DHL-Paketen<\/span><\/b><\/p>\n<p>Was aber &auml;ndert sich nun f&uuml;r uns, wenn wir bis dahin unsere Paket-Etiketten mit Intraship erstellt haben Zun&auml;chst einmal k&ouml;nnen wir das alte Export-Format, das wir im Beitrag <b>Versandetiketten mit DHL-Intraship <\/b>(<b>www.access-im-unternehmen.de\/991<\/b>) vorgestellt haben, verabschieden. Das Format war nicht gerade &uuml;bersichtlich, daher ist der Wechsel zu einem neuen Format vielleicht gar nicht schlecht. Daf&uuml;r programmieren wir den Export nun komplett neu. Wie die Export-Datei aussehen muss, finden wir im Anschluss heraus.<\/p>\n<p>Dazu klicken wir zun&auml;cht auf den Link <b>Sendungsdaten importieren<\/b>, was den Dialog aus Bild 3 &ouml;ffnet. Hier finden wir bereits die M&ouml;glichkeit, eine Vorlage auszuw&auml;hlen sowie eine Schaltfl&auml;che zum Ausw&auml;hlen der zu importierenden CSV-Datei. Wir ben&ouml;tigen allerdings Informationen dar&uuml;ber, wie die CSV-Datei aufgebaut sein soll.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_003.png\" alt=\"Maske zum Hochladen der CSV-Datei\" width=\"649,559\" height=\"260,4764\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Maske zum Hochladen der CSV-Datei<\/span><\/b><\/p>\n<p>Klicken Sie hier im Text auf den Link <b>> Vorlagen<\/b>, &ouml;ffnet sich der Dialog aus Bild 4.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_004.png\" alt=\"Auswahl einer CSV-Vorlage\" width=\"649,559\" height=\"429,9897\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Auswahl einer CSV-Vorlage<\/span><\/b><\/p>\n<p>Wenn wir uns nun beispielsweise die Vorlage <b>DHL Vorlage Sendungsdatenimport <\/b>ansehen, finden wir eine Definition der Vorlage vor, die im oberen Teil zun&auml;chst allgemeine Formatierungsvorgaben liefert (siehe Bild 5).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_005.png\" alt=\"Aussehen einer der vorgefertigten Vorlagen\" width=\"649,559\" height=\"817,7255\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Aussehen einer der vorgefertigten Vorlagen<\/span><\/b><\/p>\n<p>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 &#8211; hier etwa durch Anf&uuml;hrungszeichen. Au&szlig;erdem legen Sie den Zeichensatz (hier ISO 8859-1) und das Datumsformat (TT.MM.JJ) fest.<\/p>\n<p>Darunter befinden sich alle Felder, die DHL &uuml;berhaupt f&uuml;r den Versand einer Lieferung verwenden kann<\/p>\n<p> Hier wurde f&uuml;r alle zu verwendenden Eigenschaften die Spalten&uuml;berschrift der zu importierenden CSV-Datei angegeben.<\/p>\n<p>Nach kurzem &uuml;berfliegen der angegebenen Spalten&uuml;berschriften stellen wir fest, dass wir f&uuml;r unsere Zwecke viel weniger Spalten zur Verf&uuml;gung stellen wollen. Dazu m&uuml;ssen wir eine neue Vorlage anlegen.<\/p>\n<h2>Neue Vorlage anlegen<\/h2>\n<p>Eine neue Vorlage legen wir ausgehend von der Seite Vorlagen f&uuml;r Sendungsdatenimport an, indem wir dort auf den Link <b>Neue Import-Vorlage anlegen >> <\/b>klicken.<\/p>\n<p>Hier finden wir die gleiche Ansicht wie in der zuvor betrachteten Vorlage vor &#8211; mit dem Unterschied, dass die rechte Spalte noch nicht mit den Spaltennamen der von uns gelieferten CSV-Datei gef&uuml;llt sind.<\/p>\n<p>Das kann auch nicht der Fall sein, da das System unsere CSV-Datei ja noch gar nicht kennt.<\/p>\n<p>Um das zu &auml;ndern, m&uuml;ssten wir auch zun&auml;chst einmal eine CSV-Datei erstellen, denn diese k&ouml;nnen wir dann unter dem Punkt <b>2. Hochladen der Musterdatei zum Auslesen der Inhalte <\/b>ausw&auml;hlen und mit einem Klick auf den Link <b>Datei analysieren >> <\/b>untersuchen lassen (siehe Bild 6).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_006.png\" alt=\"Hochladen der Musterdatei\" width=\"649,559\" height=\"111,5586\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Hochladen der Musterdatei<\/span><\/b><\/p>\n<h2>Bestehende L&ouml;sung erweitern<\/h2>\n<p>Im Beitrag <b>Bestellverwaltung mit Versand <\/b>(<b>www.access-im-unternehmen.de\/993<\/b>) haben wir bereits eine kleine L&ouml;sung programmiert, die uns per Mausklick einen CSV-Export f&uuml;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&ouml;nnen. In dieser L&ouml;sung haben wir mit einigen Klassen gearbeitet, von denen jede zum Zusammenstellen einer Zeile eines Satzes f&uuml;r eine DHL-Lieferung diente.<\/p>\n<p>Unter Intraship bestand die CSV-Datei n&auml;mlich nicht nur aus einer Zeile je Datensatz, sondern die Daten wurden auf mehrere Zeilen aufgeteilt. Das ist nun nat&uuml;rlich hinf&auml;llig &#8211; die neue Schnittstelle nimmt nur noch eine Zeile je Datensatz an. Das hei&szlig;t, dass wir die in der bestehenden L&ouml;sung verwendeten Klassen auch mehr oder weniger aufgeben k&ouml;nnen.<\/p>\n<p>Jede dieser Klassen stellte einige Eigenschaften zur Verf&uuml;gung, mit denen die gew&uuml;nschten Werte etwa aus einem Datensatz der Datenbank gef&uuml;llt werden konnten. Au&szlig;erdem lieferten die Klassen f&uuml;r die Eigenschaft Satz die komplette Zeile mit den Daten dieser Klasse.<\/p>\n<h2>Klasse zum Zusammenstellen von Datens&auml;tzen f&uuml;r die CSV-Datei<\/h2>\n<p>Eine solche Klasse wollen wir nun f&uuml;r die neuen Daten auch erstellen.<\/p>\n<p>Wir arbeiten uns dabei durch die einzelnen Zeilen der Liste aus Bild 7 durch und ber&uuml;cksichtigen dabei zun&auml;chst nur die offensichtlich notwendigen Felder.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_007.png\" alt=\"Freie Felder zum Zuweisen der Spalten der Vorlage\" width=\"649,559\" height=\"679,5385\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Freie Felder zum Zuweisen der Spalten der Vorlage<\/span><\/b><\/p>\n<p>Hier stellt sich nun die Frage, wie wir am schnellsten zum Ziel kommen. Die bisherige L&ouml;sung bestand aus einer Hauptklasse, welche die unterschiedlichen Kategorien von Informationen wie Sendung, Benachrichtigungen, Absender, Empf&auml;nger und so weiter in einzelnen Klassen behandelt hat. Auf diese Weise war das Zusammenstellen leicht zu programmieren.<\/p>\n<p>Wollen wir auf diesen Klassen aufsetzen und diese so &auml;ndern, dass diese die Daten nun so zur&uuml;ckliefern, wie wir sie f&uuml;r den Import ben&ouml;tigen Oder legen wir eine komplett neue Klasse an Wir entscheiden uns, die einmal gemachte Arbeit als Grundlage f&uuml;r den neuen Export zu nutzen und passen die bestehenden Klassen an.<\/p>\n<p>F&uuml;r die Hauptklasse <b>clsDPEEMain<\/b>, welche die Daten aus den Unterklassen <b>clsDPEEShipment<\/b>, <b>clsDPEESender<\/b>, <b>clsDPEEReceiver<\/b>, <b>clsDPEEItem <\/b>und <b>clsDPEENotification <\/b>zusammenstellt, brauchen wir den Code zun&auml;chst nur so zu &auml;ndern, dass die Daten, die zuvor in jeweils einer neuen Zeile aneinandergeh&auml;ngt wurden, nun in einer Zeile landen. Die neue Version der Eigenschaft <b>Satz<\/b>, welche die Ergebnisse der &uuml;brigen Klassen zusammensetzt, sieht nun wie folgt aus:<\/p>\n<pre><span style=\"color:blue;\">Public Property Get <\/span>Satz()<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strSatz<span style=\"color:blue;\"> As String<\/span>\r\n     strSatz = strSatz & m_DPEEShipment.Satz\r\n     strSatz = strSatz & m_DPEESender.Satz\r\n     strSatz = strSatz & m_DPEEReceiver.Satz\r\n     strSatz = strSatz & m_DPEEItem.Satz\r\n     strSatz = strSatz & m_DPEENotification.Satz\r\n     Satz = strSatz\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<p>Ge&auml;ndert hat sich hier im Wesentlichen, dass wir die von der <b>Satz<\/b>-Eigenschaft der verschiedenen Klassen gelieferten Daten nicht mehr durch das Steuerzeichen <b>vbCrLf <\/b>jeweils in eine neue Zeile schreiben, sondern diese einfach aneinanderh&auml;ngen. Wenn wir nun nichts weiter &auml;ndern und die Schaltfl&auml;che <b>Versand vorbereiten <\/b>im Formular <b>frmBestellungsdetails <\/b>aufrufen (siehe Bild 8), legen wir eine CSV-Datei mit der folgenden Zeichenfolge an:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_008.png\" alt=\"Das Formular frmBestellungsdetails\" width=\"549,6265\" height=\"339,0683\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Das Formular frmBestellungsdetails<\/span><\/b><\/p>\n<pre>|DPEE-SHIPMENT|EPN|20180306|||||1||||||||||||||||||EUR|||||||01||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||DPEE-SENDER|6275498028|Andr&eacute; Minhorst Verlag||Andr&eacute;Minhorst|Borkhofer Str.|17||47137|Duisburg|DE||andre@minhorst.com|0203\/12121212||||||||||||||||||||||DPEE-RECEIVER|Herr Andr&eacute; Minhorst|Andr&eacute; Minhorst Verlag|||Herr Andr&eacute; Minhorst|Borkhofer Str.|17||47137|Duisburg|DE||andre@minhorst.com|||||||||||||||||||DPEE-ITEM||||||PK|||DPEE-NOTIFICATION||andre@minhorst.com|||<\/pre>\n<p>Hier f&auml;llt zun&auml;chst auf, dass wir als Trennzeichen das Pipe-Zeichen (<b>|<\/b>) und nicht das Semikolon verwenden. M&uuml;ssen wir das im Code &auml;ndern Nein, wir k&ouml;nnen auch einfach die Einstellung der noch anzulegenden Vorlage auf der DHL-Webseite auf dieses Zeichen &auml;ndern. Au&szlig;erdem finden wir hier noch die Schl&uuml;sselw&ouml;rter vor, die in der urspr&uuml;nglichen Version jeweils den Inhalt einer Zeile markiert haben, also <b>DPEE-SHIPMENT<\/b>, <b>DPEE-SENDER <\/b>und so weiter. Diese k&ouml;nnen wir auch noch entfernen. Au&szlig;erdem m&uuml;ssen wir, damit wir die Spalten &uuml;ber ihren Eigenschaftsnamen zur Vorlage zuweisen k&ouml;nnen, noch eine Zeile mit den Spalten&uuml;berschriften vorbereiten &#8211; auch diese durch das Pipe-Zeichen voneinander getrennt.<\/p>\n<p>Als Erstes wollen wir die Schl&uuml;sselw&ouml;rter entfernen. Dies erledigen wir jeweils in den <b>Public Property Satz<\/b>-Eigenschaften der f&uuml;nf Klassen <b>clsDBEEItem<\/b>, <b>clsDBEE-Notification<\/b>, <b>clsDBEESender<\/b>, <b>clsDBEEReceiver <\/b>und <b>clsDBEEShipment<\/b>.<\/p>\n<p>In der Methode <b>Satz <\/b>der Klasse <b>clsDPEEItem <\/b>m&uuml;ssen wir dazu nur die Zeile entfernen, die den Text <b>DPEE-ITEM| <\/b>zur Variablen <b>strSatz <\/b>hinzuf&uuml;gt und die wir nachfolgend vorerst auskommentiert haben. Gleiches erledigen wir mit der Zeile, welche den Wert der Variablen <b>m_Ordnungsnummer <\/b>hinzuf&uuml;gt. Diese haben wir in der Methode <b>Satz <\/b>der Klasse <b>clsDPEEMain <\/b>zwar schon nicht mehr an die einzelnen Klassen &uuml;bergeben, weshalb diese im obigen Beispiel f&uuml;r die Ausgabe nicht mehr auftauchte, aber wir wollen auch noch die leere Stelle in der Ausgabe entfernen:<\/p>\n<pre><span style=\"color:blue;\">Public Property Get <\/span>Satz()<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strSatz<span style=\"color:blue;\"> As String<\/span>\r\n     ''''strSatz = strSatz & m_Ordnungsnummer & \"|\"\r\n     ''''strSatz = strSatz & \"DPEE-ITEM|\"\r\n     strSatz = strSatz & m_GewichtDesPackstueckesInKg & \"|\"\r\n     strSatz = strSatz & m_LaengeDesPackstueckesInCm & \"|\"\r\n     strSatz = strSatz & m_BreiteDesPackstueckesInCm & \"|\"\r\n     strSatz = strSatz & m_HoeheDesPackstueckesInCm & \"|\"\r\n     strSatz = strSatz & m_PackstueckBeschreibung & \"|\"\r\n     strSatz = strSatz & m_PackartKollitraeger & \"|\"\r\n     strSatz = strSatz & m_Packstueckreferenz & \"|\"\r\n     strSatz = strSatz & m_Referenznummer & \"|\"\r\n''''    strSatz = <span style=\"color:blue;\">Left<\/span>(strSatz, <span style=\"color:blue;\">Len<\/span>(strSatz) - 1)\r\n     Satz = strSatz\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<p>Schlie&szlig;lich entfernen wir auch noch die Zeile, die das abschlie&szlig;ende Pipe-Zeichen entfernt &#8211; immerhin wollen wir sp&auml;ter alle f&uuml;nf S&auml;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&ouml;tigen.<\/p>\n<p>Auf die gleiche Art und Weise bearbeiten wir die Methode <b>Satz <\/b>der &uuml;brigen Klassen. Damit sieht die Ausgabe schon etwas schlanker aus:<\/p>\n<pre>EPN|20180306|||||1||||||||||||||||||EUR|||||||01|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\r\n6275498028|Andr&eacute; Minhorst Verlag||Andr&eacute;Minhorst|Borkhofer Str.|17||47137|Duisburg|DE||andre@minhorst.com|\r\n0203\/12121212|||||||||||||||||||||Herr Andr&eacute; Minhorst|Andr&eacute; Minhorst Verlag|||Herr Andr&eacute; Minhorst|Borkhofer\r\n Str.|17||47137|Duisburg|DE||andre@minhorst.com|||||||||||||||||||||||PK|||andre@minhorst.com|||<\/pre>\n<h2>Spalten&uuml;berschrift erstellen<\/h2>\n<p>Nun wollen wir die Spalten&uuml;berschriften hinzuf&uuml;gen. Das ist eine reine Flei&szlig;arbeit. Wir schnappen uns dazu zum Beispiel die folgenden Anweisungen der <b>Satz<\/b>-Methode der Klasse <b>clsDPEEItem<\/b>:<\/p>\n<pre>strSatz = strSatz & m_GewichtDesPackstueckesInKg & \"|\"\r\nstrSatz = strSatz & m_LaengeDesPackstueckesInCm & \"|\"\r\nstrSatz = strSatz & m_BreiteDesPackstueckesInCm & \"|\"\r\nstrSatz = strSatz & m_HoeheDesPackstueckesInCm & \"|\"\r\nstrSatz = strSatz & m_PackstueckBeschreibung & \"|\"\r\nstrSatz = strSatz & m_PackartKollitraeger & \"|\"\r\nstrSatz = strSatz & m_Packstueckreferenz & \"|\"\r\nstrSatz = strSatz & m_Referenznummer & \"|\"<\/pre>\n<p><!--30percent--><\/p>\n<p>Dann entfernen wir die Zeilenumbr&uuml;che, den vorderen Teil bis zum Unterstrich (<b>strSatz = strSatz &#038; m_<\/b>) lassen hinten auch nur das Pipe-Zeichen &uuml;ber. Das Ergebnis sieht dann f&uuml;r die erste Klasse wie folgt aus:<\/p>\n<pre>GewichtDesPackstueckesInKg|LaengeDesPackstueckesIn-Cm|Breite-DesPackstueckesInCm|HoeheDesPackstueckesIn--Cm|\r\nPackstueck-Beschreibung|PackartKollitraeger|Packstueck-referenz|Referenznummer|<\/pre>\n<p>Statt dieses Zeichenkette zu speichern und bei Bedarf bereitzustellen, k&ouml;nnen wir auch den Klassen jeweils eine Eigenschaft namens <b>Kopfzeile <\/b>hinzuf&uuml;gen, welche am Beispiel der Klasse <b>clsDPEEItem <\/b>wie folgt aussieht:<\/p>\n<pre><span style=\"color:blue;\">Public Property Get <\/span>Kopfzeile()<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strKopf<span style=\"color:blue;\"> As String<\/span>\r\n     strKopf = strKopf & \"GewichtDesPackstueckesInKg|\"\r\n     strKopf = strKopf & \"LaengeDesPackstueckesInCm|\"\r\n     strKopf = strKopf & \"BreiteDesPackstueckesInCm|\"\r\n     strKopf = strKopf & \"HoeheDesPackstueckesInCm|\"\r\n     strKopf = strKopf & \"PackstueckBeschreibung|\"\r\n     strKopf = strKopf & \"PackartKollitraeger|\"\r\n     strKopf = strKopf & \"Packstueckreferenz|\"\r\n     strKopf = strKopf & \"Referenznummer|\"\r\n     Satz = strKopf\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<p>Diese ist dann genauso aufgebaut wie die Eigenschaft Satz. Wenn einmal eine Zeile hinzukommt oder wegf&auml;llt, k&ouml;nnen wir auch die Spaltenk&ouml;pfe viel leichter anpassen. F&uuml;r die beiden Klassen <b>clsDPEESender <\/b>und <b>clsDPEEReceiver<\/b>, die teilweise gleich bezeichnete Eigenschaften enthalten, stellen wir den Spalten&uuml;berschriften noch jeweils die Zeichenkette <b>Sender_ <\/b>beziehungsweise <b>Receiver_<\/b> voran:<\/p>\n<pre><span style=\"color:blue;\">Public Property Get <\/span>Kopfzeile()<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strKopf<span style=\"color:blue;\"> As String<\/span>\r\n     strKopf = strKopf & \"Sender_Kundennummer|\"\r\n     strKopf = strKopf & \"Sender_Firmenname1|\"\r\n     strKopf = strKopf & \"Sender_Firmenname2|\"\r\n     strKopf = strKopf & \"Sender_Kontaktperson|\"\r\n     strKopf = strKopf & \"Sender_Strasse|\"\r\n     strKopf = strKopf & \"Sender_Hausnummer|\"\r\n     strKopf = strKopf & \"Sender_ZusaetzlicheAdressinformation|\"\r\n     strKopf = strKopf & \"Sender_PLZ|\"\r\n     strKopf = strKopf & \"Sender_Stadt|\"\r\n     strKopf = strKopf & \"Sender_Laendercode|\"\r\n     strKopf = strKopf & \"Sender_Bemerkung|\"\r\n     strKopf = strKopf & \"Sender_Emailadresse|\"\r\n     ...\r\n     Kopf = strKopf\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<p>In der Klasse <b>clsDPEEMain <\/b>f&uuml;gen wir ebenfalls eine neue Methode hinzu, welche die Kopfzeilen-Anteile der einzelnen Klassen zusammenf&uuml;hrt:<\/p>\n<pre><span style=\"color:blue;\">Public Property Get <\/span>Kopfzeile()<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strKopf<span style=\"color:blue;\"> As String<\/span>\r\n     strKopf = strKopf & m_DPEEShipment.Kopfzeile\r\n     strKopf = strKopf & m_DPEESender.Kopfzeile\r\n     strKopf = strKopf & m_DPEEReceiver.Kopfzeile\r\n     strKopf = strKopf & m_DPEEItem.Kopfzeile\r\n     strKopf = strKopf & m_DPEENotification.Kopfzeile\r\n     Kopfzeile = strKopf\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<p>Wichtig ist hier, dass die Kopfzeilen der einzelnen Abschnitte in der gleichen Reihenfolge zusammengef&uuml;gt werden wie die Inhalte der Abschnitte selbst.<\/p>\n<h2>Weitere &auml;nderungen<\/h2>\n<p>Die neue Vorlage erlaubt wohl sowohl nur ein einzelnes Packst&uuml;ck und auch nur eine Notification. Daher m&uuml;ssen wir in der Klasse <b>clsDPEEMain <\/b>ein paar Anpassungen vornehmen. Als Erstes fliegen die nachfolgend auskommentierten Zeilen aus der Methode <b>Initialize <\/b>heraus. Daf&uuml;r kommen die beiden Anweisungen zur Methode hinzu, welche jeweils ein Objekt auf Basis der Klasse <b>clsDPEEItem <\/b>und eines der Klasse <b>clsDPEENotification <\/b>initialisieren:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Class_Initialize()\r\n     <span style=\"color:blue;\">Set<\/span> m_DPEEShipment = <span style=\"color:blue;\">New<\/span> clsDPEEShipment\r\n     <span style=\"color:blue;\">Set<\/span> m_DPEESender = <span style=\"color:blue;\">New<\/span> clsDPEESender\r\n     <span style=\"color:blue;\">Set<\/span> m_DPEEReceiver = <span style=\"color:blue;\">New<\/span> clsDPEEReceiver\r\n''''    <span style=\"color:blue;\">Set<\/span> m_DPEEItems = <span style=\"color:blue;\">New<\/span> Collection\r\n''''    <span style=\"color:blue;\">Set<\/span> m_DPEENotifications = <span style=\"color:blue;\">New<\/span> Collection\r\n     <span style=\"color:blue;\">Set<\/span> m_DPEEItem = <span style=\"color:blue;\">New<\/span> clsDPEEItem\r\n     <span style=\"color:blue;\">Set<\/span> m_DPEENotification = <span style=\"color:blue;\">New<\/span> clsDPEENotification\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Damit wir von au&szlig;en auf die entsprechenden Elemente zugreifen k&ouml;nnen, f&uuml;gen wir die beiden &ouml;ffentlichen Eigenschaften hinzu:<\/p>\n<pre><span style=\"color:blue;\">Public Property Get <\/span>DPEEItem()<span style=\"color:blue;\"> As <\/span>clsDPEEItem\r\n     <span style=\"color:blue;\">Set<\/span> DPEEItem = m_DPEEItem\r\n<span style=\"color:blue;\">End Property<\/span>\r\n<span style=\"color:blue;\">Public Property Get <\/span>DPEENotification()<span style=\"color:blue;\"> As <\/span>clsDPEENotification\r\n     <span style=\"color:blue;\">Set<\/span> DPEENotification = m_DPEENotification\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<p>Damit funktioniert nun auch die Methode <b>Kopfzeile <\/b>einwandfrei.<\/p>\n<h2>Kopfzeile abrufen<\/h2>\n<p>Um die Kopfzeile abrufen zu k&ouml;nnen, legen wir im Modul <b>mdlDPEE <\/b>die folgende Prozedur an:<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>KopfzeileErstellen()\r\n     <span style=\"color:blue;\">Dim <\/span>objDPEEMain<span style=\"color:blue;\"> As <\/span>clsDPEEMain\r\n     <span style=\"color:blue;\">Dim <\/span>strKopfzeile<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> objDPEEMain = <span style=\"color:blue;\">New<\/span> clsDPEEMain\r\n     <span style=\"color:blue;\">With<\/span> objDPEEMain\r\n         strKopfzeile = strKopfzeile _\r\n             & .DPEEShipment.Kopfzeile\r\n         strKopfzeile = strKopfzeile _\r\n             & .DPEESender.Kopfzeile\r\n         strKopfzeile = strKopfzeile _\r\n             & .DPEEReceiver.Kopfzeile\r\n         strKopfzeile = strKopfzeile & .DPEEItem.Kopfzeile\r\n         strKopfzeile = strKopfzeile _\r\n             & .DPEENotification.Kopfzeile\r\n     End <span style=\"color:blue;\">With<\/span>\r\n     KopfzeileErstellen = strKopfzeile\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<h2>Funktion mit Kopfzeile testen<\/h2>\n<p>Wir passen nun die Methode <b>cmdVersandVorbereiten_Click<\/b>, die durch die Schaltfl&auml;che <b>Versand vorbereiten <\/b>des oben dargestellten Formulars ausgel&ouml;st wird, wie folgt an:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdVersandVorbereiten_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>strSatz<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strKopfzeile<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strDateiname<span style=\"color:blue;\"> As String<\/span>\r\n     strKopfzeile = KopfzeileErstellen\r\n     strSatz = SatzErstellen(Me!BestellungID)\r\n     strDateiname = CurrentProject.Path & \"\\DHL_\" _\r\n         & Format(Date, \"yyyymmdd\") & \".csv\"\r\n     Open strDateiname For Output<span style=\"color:blue;\"> As <\/span>#1\r\n     Print #1, strKopfzeile\r\n     Print #1, strSatz\r\n     Close #1\r\n     <span style=\"color:blue;\">Call<\/span> ShellExecute(Me.hWnd, \"open\", strDateiname, \"\", _\r\n         \"\", SW_NORMAL)\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Wir f&uuml;gen also eine Variable namens <b>strKopfzeile <\/b>hinzu und f&uuml;llen diese durch einen Aufruf der Funktion <b>KopfzeileErstellen<\/b>. Die so ermittelte Zeile f&uuml;gen wir dann als erste Zeile in die zu erstellende <b>.csv<\/b>-Datei ein.<\/p>\n<p>Wenn wir diese nun ausf&uuml;hren, wird das Ergebnis aus Bild 9 in einem neuen Excel-Dokument angezeigt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_009.png\" alt=\"Export der Daten f&uuml;r den Versand eines DHL-Pakets\" width=\"700\" height=\"200,766\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Export der Daten f&uuml;r den Versand eines DHL-Pakets<\/span><\/b><\/p>\n<p>Hier zeigt sich, dass die Verwendung des Pipe-Zeichens als Trennzeichen zwischen den einzelnen Feldern auch zur Anzeige in Excel nicht optimal ist.<\/p>\n<p>Um zu pr&uuml;fen, ob die Spalten&uuml;berschriften und die Spalteninhalte korrelieren, m&uuml;ssen wir wohl doch noch die Pipe-Zeichen durch Semikola ersetzen. Doch das ist leichter als gedacht: Wenn wir die Suchen und Ersetzen-Funktion des VBA-Editors f&uuml;r die f&uuml;nf betroffenen Klassen durchf&uuml;hren, sind wir schon fertig (siehe Bild 10).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_010.png\" alt=\"Suchen und ersetzen von Pipe-Zeichen durch das Semikolon\" width=\"424,7115\" height=\"183,5292\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Suchen und ersetzen von Pipe-Zeichen durch das Semikolon<\/span><\/b><\/p>\n<p>Danach sieht das Ergebnis in der Excel-Datei schon wesentlich besser lesbar aus (siehe Bild 11).<\/p>\n<p class=\"image\"><img loading=\"lazy\" decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_011.png\" alt=\"Export der Daten, diesmal mit der korrekten Aufteilung auf die einzelnen Spalten\" width=\"700\" height=\"210\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 11: Export der Daten, diesmal mit der korrekten Aufteilung auf die einzelnen Spalten<\/span><\/b><\/p>\n<p>Was noch viel besser ist: Wenn wir nun zum Webportal von DHL zum Versenden wechseln, dort die neue Vorlage anzeigen, unsere Datei ausw&auml;hlen und diese analysieren lassen, erscheinen unsere Spalten&uuml;berschriften in der Auswahl der Quellfelder f&uuml;r die Zuweisung der Werte (siehe Bild 12).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_012.png\" alt=\"Die Felder unserer Datei sind nun ausw&auml;hlbar.\" width=\"700\" height=\"277,5641\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 12: Die Felder unserer Datei sind nun ausw&auml;hlbar.<\/span><\/b><\/p>\n<p>Damit bleibt uns nun zun&auml;chst die Aufgabe, alle von uns benutzten Felder der CSV-Datei den entsprechenden Feldern in der &uuml;bersicht zuzuweisen. Praktischerweise zeigt das Kombinationsfeld in Klammern hinter den Spalten&uuml;berschriften sogar die mit der Musterdatei gelieferten Werte mit. Da hat sich jemand Gedanken gemacht! Haben Sie alle Spalten zugewiesen, k&ouml;nnen Sie unten auf die Schaltfl&auml;che <b>Speichern <\/b>klicken. Zuvor m&uuml;ssen Sie jedoch noch einen aussagekr&auml;ftigen Namen f&uuml;r die neue Vorlage angeben. Danach wird sie dann gespeichert und anschlie&szlig;end in der Liste der Vorlagen angezeigt. Sie k&ouml;nnen nun jederzeit zu der Vorlage zur&uuml;ckkehren und diese anpassen.<\/p>\n<p>Und was den Komfort der Zuordnung angeht, wird es sogar noch besser: Wenn Sie nicht ewig in der Liste nach der gew&uuml;nschten Spalten&uuml;berschrift suchen wollen, k&ouml;nnen Sie einfach einen Teil der Bezeichnung der Spalten&uuml;berschrift in das Textfeld eingeben. Das Kombinationsfeld zeigt dann nur die passenden Spalten&uuml;berschriften an (siehe Bild 13).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_013.png\" alt=\"Suche nach Spalten&uuml;berschriften\" width=\"424,7115\" height=\"233,0198\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 13: Suche nach Spalten&uuml;berschriften<\/span><\/b><\/p>\n<h2>Import, erster Versuch<\/h2>\n<p>Nach dem Zuordnen der Felder und dem Speichern der Vorlage unter dem Namen <b>AMV <\/b>(in diesem Beispiel) versuchen gleich einmal, die exportierte Datei zu importieren. Dazu rufen wir den Men&uuml;befehl <b>Versandabwicklung|Sendungsdaten importieren <\/b>auf. Dies resultiert allerdings in den Fehlermeldungen aus Bild 14. Diese schauen wir uns nacheinander an.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_014.png\" alt=\"Fehler beim Import\" width=\"700\" height=\"299,6358\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 14: Fehler beim Import<\/span><\/b><\/p>\n<p>Achtung: Vergessen Sie nicht, die von Ihnen neu erstellte Vorlage einzustellen (hier <b>AMV<\/b>).<\/p>\n<h2>Fehler: Falsches Datumsformat<\/h2>\n<p>Das ist einfach. Wir haben als Datumsformat <b>DD.MM.JJ <\/b>angegeben, allerdings wird unser Datum im Format <b>JJJJMMDD <\/b>geliefert. Wir k&ouml;nnen an einer der beiden Stellen &auml;nderungen vornehmen. Also widmen wir uns dem Quellcode. Die <b>Property Let<\/b>-Methode <b>Sendungsdatum <\/b>in der Klasse <b>clsDPEEShipment <\/b>sah bisher so aus:<\/p>\n<pre><span style=\"color:blue;\">Public Property Let <\/span>Sendungsdatum(datSendungsdatum<span style=\"color:blue;\"> As Date<\/span>)\r\n     <span style=\"color:blue;\">If <\/span>datSendungsdatum &gt; 0<span style=\"color:blue;\"> Then<\/span>\r\n         m_Sendungsdatum = Format(datSendungsdatum, \"yyyymmdd\")\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<p>Die entscheidende Zeile &auml;ndern wir nun wie folgt:<\/p>\n<pre>m_Sendungsdatum = Format(datSendungsdatum, \"dd.mm.yy\")<\/pre>\n<p>Damit starten wir das Hochladen der Datei erneut und erhalten nun immerhin eine Fehlermeldung weniger. Zur Sicherheit &auml;ndern wir auch gleich die Methode <b>Zustelldatum <\/b>auf das passende Datumsformat.<\/p>\n<h2>Ung&uuml;ltiges Absenderland<\/h2>\n<p>Als Absenderland haben wir in Intraship immer das aus zwei Buchstaben bestehende L&auml;nderk&uuml;rzel &uuml;bergeben, f&uuml;r Deutschland also beispielsweise <b>DE<\/b>. Das wird hier nicht akzeptiert, hier ben&ouml;tigen wir den aus drei Buchstaben bestehenden L&auml;ndercode. Also &auml;ndern wir die entsprechende Funktion, welche den L&auml;ndercode zum angegebenen Land liefert, wie folgt:<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>LaendercodeAusLand(strLand<span style=\"color:blue;\"> As String<\/span>)<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strLaendercode<span style=\"color:blue;\"> As String<\/span>\r\n     Select Case strLand\r\n         <span style=\"color:blue;\">Case <\/span>\"Deutschland\"\r\n             strLaendercode = \"DEU\"\r\n         <span style=\"color:blue;\">Case <\/span>\"&ouml;sterreich\"\r\n             strLaendercode = \"AUT\"\r\n         <span style=\"color:blue;\">Case <\/span>\"Schweiz\"\r\n             strLaendercode = \"CHE\"\r\n     <span style=\"color:blue;\">End Select<\/span>\r\n     LaendercodeAusLand = strLaendercode\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Damit haben wir weitere drei Fehlermeldungen entsch&auml;rft. Diese Funktion k&ouml;nnen Sie noch durch eine ausgefeiltere Funktion ersetzen. Dazu brauchen wir eine Tabelle mit allen L&auml;ndercodes und den vollst&auml;ndigen Namen der L&auml;nder. Die Funktion w&uuml;rde dann das K&uuml;rzel f&uuml;r das betroffene Land auslesen.<\/p>\n<h2>L&auml;nge, Breite, H&ouml;he<\/h2>\n<p>Als N&auml;chstes moniert der Import die fehlende L&auml;nge des Pakets sowie die fehlende Breite und H&ouml;he. Diese haben wir bei der Vorg&auml;ngerversion noch gar nicht genutzt, dort reichte die Angabe des Gewichts aus. Wir wollen aber zun&auml;chst den folgenden Fehler beheben, der die fehlende Produkt- und Servicekennzeichnung meldet &#8211; vielleicht k&ouml;nnen wir dann auf die Angabe der Abmessungen verzichten. Der von uns &uuml;bermittelte Produktcode lautet <b>EPN<\/b>.  Ein Blick in die Zuordnung zeigt dann aber schnell, dass wir uns hier schlicht vertippt haben &#8211; das Feld <b>L&auml;nge <\/b>enthielt als Quelle die Spalte <b>Produktcode<\/b>. Dennoch widmen wir uns nun der Produkt- und Servicekennzeichnung. Da der Wert <b>EPN <\/b>nicht akzeptiert wird, schauen wir uns einmal an, was in der Beispiel-Importdatei f&uuml;r Werte auftauchen. Da gibt es dann zum Beispiel Werte wie <b>V01PAK <\/b>oder <b>V01PAK.V01RET<\/b>. Wo finden wir diese Werte Dazu klicken Sie im Hauptmen&uuml; des Gesch&auml;ftskundenportals auf <b>Versenden|Einstellungen<\/b>. Hier klicken Sie dann auf den Eintrag <b>Produkt-\/Servicezuordnungen f&uuml;r den Datenimport<\/b> (siehe Bild 15).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_015.png\" alt=\"Zu den Produkt-\/Servicezuordnungen f&uuml;r den Datenimport\" width=\"649,559\" height=\"325,3689\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 15: Zu den Produkt-\/Servicezuordnungen f&uuml;r den Datenimport<\/span><\/b><\/p>\n<p>Hier finden Sie eine &uuml;bersicht mit einem Datensatz mit <b>DHL Produkt- und Service-Zuordnungen <\/b>als Vorlage f&uuml;r Ihren Import. Klicken Sie auf das Bearbeiten-Symbol, erscheint die &uuml;bersicht aller Dienstleistungen (siehe Bild 16). Diese enth&auml;lt in der linken Seite die Bezeichnung der Dienstleistung beziehungsweise des Produkts und auf der rechten die beim Import zu verwendenden Bezeichnungen. Diese wollen wir auch in diesem Fall in unserem Code anpassen und nicht in der Vorlage. Bisher haben wir in der Klasse <b>clsDPEEShipment <\/b>die folgende <b>Property Let<\/b>-Methode genutzt, um eine der beiden m&ouml;glichen Konstanten, n&auml;mlich <b>eWeltpaket <\/b>oder <b>eDHLPaket<\/b>, in eine Zeichenkette umzuwandeln:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_016.png\" alt=\"Vorlage f&uuml;r die Bezeichnungen der Produkte und Dienstleistungen\" width=\"649,559\" height=\"447,3433\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 16: Vorlage f&uuml;r die Bezeichnungen der Produkte und Dienstleistungen<\/span><\/b><\/p>\n<pre><span style=\"color:blue;\">Public Property Let <\/span>Produktcode(_\r\n         intProduktcode<span style=\"color:blue;\"> As <\/span>eProduktcode)\r\n     <span style=\"color:blue;\">Dim <\/span>strProduktcode<span style=\"color:blue;\"> As String<\/span>\r\n     Select Case intProduktcode\r\n         <span style=\"color:blue;\">Case <\/span>eWeltpaket\r\n             strProduktcode = \"BPI\"\r\n         <span style=\"color:blue;\">Case <\/span>eDHLPaket\r\n             strProduktcode = \"EPN\"\r\n     <span style=\"color:blue;\">End Select<\/span>\r\n     m_Produktcode = strProduktcode\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<p>Hier ersetzen wir nun <b>BPI <\/b>durch <b>V53WPAK <\/b>(f&uuml;r <b>DHL Paket International<\/b>) und <b>EPN <\/b>durch <b>V01PAK<\/b>, sodass der Code nun so aussieht:<\/p>\n<pre><span style=\"color:blue;\">Public Property Let <\/span>Produktcode(intProduktcode<span style=\"color:blue;\"> As <\/span>eProduktcode)\r\n     <span style=\"color:blue;\">Dim <\/span>strProduktcode<span style=\"color:blue;\"> As String<\/span>\r\n     Select Case intProduktcode\r\n         <span style=\"color:blue;\">Case <\/span>eWeltpaket\r\n             strProduktcode = \"V53WPAK\"\r\n         <span style=\"color:blue;\">Case <\/span>eDHLPaket\r\n             strProduktcode = \"V01PAK\"\r\n     <span style=\"color:blue;\">End Select<\/span>\r\n     m_Produktcode = strProduktcode\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<h2>Abrechnungsnummer<\/h2>\n<p>Schlie&szlig;lich weist die Fehlerliste nur noch die Abrechnungsnummer auf. Diese haben wir in Intraship ebenfalls noch nicht ber&uuml;cksichtigt. Also f&uuml;gen wir ein paar Elemente zum VBA-Projekt hinzu. Das erste ist die folgende Variable in der Klasse <b>clsDPEEShipment<\/b>:<\/p>\n<pre><span style=\"color:blue;\">Private <\/span>m_Abrechnungsnummer<span style=\"color:blue;\"> As String<\/span><\/pre>\n<p>Dazu legen wir eine passende <b>Property Let<\/b>-Methode an:<\/p>\n<pre><span style=\"color:blue;\">Public Property Let <\/span>Abrechnungsnummer( strAbrechnungsnummer<span style=\"color:blue;\"> As String<\/span>)\r\n     m_Abrechnungsnummer = \"\"\"\" & strAbrechnungsnummer & \"\"\"\"\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<p>Schlie&szlig;lich f&uuml;gen wir noch eine Zeile zur Methode <b>Kopfzeile <\/b>hinzu, damit das neu hinzugef&uuml;gte Feld auch in die CSV-Datei gelangt:<\/p>\n<pre><span style=\"color:blue;\">Public Property Get <\/span>Kopfzeile()<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strKopf<span style=\"color:blue;\"> As String<\/span>\r\n     strKopf = strKopf & \"Produktcode;\"\r\n     ...\r\n     strKopf = strKopf & \"Email;\"\r\n     strKopf = strKopf & \"Abrechnungsnummer;\"\r\n     Kopfzeile = strKopf\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<p>Das Gleiche erledigen wir auch noch f&uuml;r die Methode <b>Satz<\/b>:<\/p>\n<pre><span style=\"color:blue;\">Public Property Get <\/span>Satz()<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strSatz<span style=\"color:blue;\"> As String<\/span>\r\n     strSatz = strSatz & m_Produktcode & \";\"\r\n     ...\r\n     strSatz = strSatz & m_Email & \";\"\r\n     strSatz = strSatz & m_Abrechnungsnummer & \";\"\r\n     Satz = strSatz\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<p>Damit w&uuml;rde die Abrechnungsnummer nun in der CSV-Datei landen. Warum w&uuml;rde Weil wir diese ja noch nicht festlegen. Also erweitern wir die Tabelle <b>tblOptionen <\/b>wie in Bild 17 um die beiden Felder <b>AbrechnungsnummerNational <\/b>und <b>AbrechnungsnummerInternational<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_017.png\" alt=\"Erweiterung der Tabelle tblOptionen\" width=\"424,7115\" height=\"330,9563\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 17: Erweiterung der Tabelle tblOptionen<\/span><\/b><\/p>\n<p>Woher bekommen wir diese Daten Diese finden Sie im Gesch&auml;ftskundenportal, wenn Sie sich anmelden und oben rechts auf Ihren Namen klicken. Dort wechseln Sie dann zur Registerseite <b>Vertragspositionen<\/b> (siehe Bild 18). Damit diese Abrechnungsnummer auch in die CSV-Datei geschrieben wird, f&uuml;gen wir der Prozedur <b>SatzErstellen <\/b>noch eine Zeile hinzu, welche die Eigenschaft <b>Abrechnungsnummer <\/b>mit dem Wert der Tabelle <b>tblOptionen <\/b>f&uuml;llt:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_018.png\" alt=\"Die Abrechnungsnummern in den Vertragsdaten des Kundenkontos\" width=\"700\" height=\"323,5187\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 18: Die Abrechnungsnummern in den Vertragsdaten des Kundenkontos<\/span><\/b><\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>SatzErstellen(lngBestellungID<span style=\"color:blue;\"> As Long<\/span>)<span style=\"color:blue;\"> As String<\/span>\r\n     ...\r\n     <span style=\"color:blue;\">Set<\/span> rstOptionen = db.OpenRecordset(\"SELECT * FROM  tblOptionen\", dbOpenDynaset)\r\n     ...\r\n     <span style=\"color:blue;\">Set<\/span> objDPEEMain = <span style=\"color:blue;\">New<\/span> clsDPEEMain\r\n     <span style=\"color:blue;\">With<\/span> objDPEEMain\r\n         <span style=\"color:blue;\">With<\/span> .DPEEShipment\r\n             ...\r\n             .Abrechnungsnummer = _\r\n                 rstOptionen!AbrechnungsnummerNational\r\n         End <span style=\"color:blue;\">With<\/span>\r\n         ...\r\n         SatzErstellen = .Satz\r\n     End <span style=\"color:blue;\">With<\/span>\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Damit erhalten wir nun die korrekte CSV-Datei.<\/p>\n<h2>CSV hochladen<\/h2>\n<p>Damit geht es nun wieder zum DHL-Gesch&auml;ftskundenportal. Hier klicken Sie unter <b>Versenden <\/b>auf die Schaltfl&auml;che <b>Sendungsdatenimport<\/b>. Sie landen dann auf der Seite <b>Sendungsimport starten<\/b>, wo Sie wieder die Vorlage <b>AMV <\/b>ausw&auml;hlen, die Import-Datei festlegen und schlie&szlig;lich auf <b>Datei hochladen <\/b>klicken. War dieser Vorgang erfolgreich, zeigt die Importvorschau die hochgeladenen Datens&auml;tze nun wie in Bild 19 ohne Fehlermeldungen an.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_019.png\" alt=\"Vorschau des Imports\" width=\"649,559\" height=\"250,4251\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 19: Vorschau des Imports<\/span><\/b><\/p>\n<p>Nun klicken Sie auf die Schaltfl&auml;che <b>Import starten >><\/b>. Danach erscheint die Ansicht aus Bild 20. Hier k&ouml;nnen Sie direkt auf die <b>Drucken<\/b>-Schaltfl&auml;che klicken, um ein PDF des Etiketts zu erzeugen und zu drucken. Achtung: Sie m&uuml;ssen die Anzeige von Popup f&uuml;r diese Seite aktivieren, da die Etiketten sonst nicht angezeigt werden!<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_020.png\" alt=\"Auswahl der importierten Datens&auml;tze mit weiteren Optionen\" width=\"649,559\" height=\"163,7964\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 20: Auswahl der importierten Datens&auml;tze mit weiteren Optionen<\/span><\/b><\/p>\n<p>Nach dem Anklicken der <b>Drucken<\/b>-Schaltfl&auml;che erscheint das Etikett in einem neuen Fenster. Sie k&ouml;nnen es nun ausdrucken oder speichern (siehe Bild 21).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_02\/pic_1127_021.png\" alt=\"Fertiges Etikett\" width=\"499,6607\" height=\"730,498\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 21: Fertiges Etikett<\/span><\/b><\/p>\n<h2>Einsetzen der L&ouml;sung in einer eigenen Anwendung<\/h2>\n<p>Der schwierige Teil f&uuml;r den Leser ist es nun, die hier vorgestellte abgewandelte L&ouml;sung des Intraship-Imports in eine eigene Anwendung einzubauen. Als Erstes f&uuml;gen Sie die sechs Klassen <b>clsDPEEMain<\/b>, <b>clsDPEEShipment<\/b>, <b>clsDPEEReceiver<\/b>, <b>clsDPEESender<\/b>, <b>clsDPEENotification <\/b>und <b>clsDPEEShipment <\/b>zur Zielanwendung hinzu.<\/p>\n<p>Au&szlig;erdem kopieren Sie die Tabelle <b>tblOptionen <\/b>in die Zielanwendung. Diese haben wir zuvor in <b>tblOptionenDHL <\/b>umbenannt, da gegebenenfalls bereits eine Tabelle namens <b>tblOptionen <\/b>vorhanden ist.<\/p>\n<p>Schlie&szlig;lich ben&ouml;tigen wir noch das Modul <b>mdlDPEE<\/b>, welches die Prozeduren <b>SatzErstellen <\/b>und <b>KopfzeileErstellen <\/b>enth&auml;lt. Diese nutzen wir als Vorlage, um eine neue passende Prozedur f&uuml;r die Zielanwendung zu programmieren. Au&szlig;erdem enth&auml;lt dieses Modul noch ein paar Hilfsroutinen und die Enumerationen.j<\/p>\n<p>Die Funktion <b>SatzErstellen<\/b> passen Sie dann so an, dass diese die in Ihrer Anwendung enthaltenen Daten aus den Tabellen entnimmt und in die Eigenschaften der Klassen schreibt. Dabei k&ouml;nnen Sie durchaus auch mehrere S&auml;tze gleichzeitig in eine CSV-Datei schreiben &#8211; Sie m&uuml;ssen dazu nur eine entsprechende Schleife anlegen und diese durchlaufen. Dabei w&uuml;rden Sie dann jeweils die Funktion Satz aufrufen und diesen an die CSV-Datei anh&auml;ngen.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Dieser Beitrag stellt eine Sammlung von Klassen vor, mit denen Sie Versanddaten aus einer Access-Anwendung in eine CSV-Datei umwandeln k&ouml;nnen. Die L&ouml;sung wurde von einer bestehenden L&ouml;sung abgeleitet, die mit der Intraship-Schnittstelle von DHL zusammengearbeitet hat. Diese Schnittstelle wurde nun jedoch deaktiviert, sodass eine neue Version unserer L&ouml;sung programmiert werden musste.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>DHL.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/47869DA6-C043-415D-AA8C-D18C8A7BA7F3\/aiu_1127.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ende Februar 2018 hat DHL die Unterst&uuml;tzung der Intraship-Schnittstelle beendet. Das hei&szlig;t, dass wir unsere DHL-Etiketten nun auf eine andere Weise erstellen m&uuml;ssen. F&uuml;r Datenbank-Experten kein Problem: Wir ben&ouml;tigen nur eine Beschreibung der gew&uuml;nschten Schnittstelle und liefern dann die Daten in der gew&uuml;nschten Form.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[66022018,662018,44000027],"tags":[],"class_list":["post-55001127","post","type-post","status-publish","format-standard","hentry","category-66022018","category-662018","category-Loesungen"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>DHL-Versand vorbereiten - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/DHLVersand_vorbereiten\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DHL-Versand vorbereiten\" \/>\n<meta property=\"og:description\" content=\"Ende Februar 2018 hat DHL die Unterst&uuml;tzung der Intraship-Schnittstelle beendet. Das hei&szlig;t, dass wir unsere DHL-Etiketten nun auf eine andere Weise erstellen m&uuml;ssen. F&uuml;r Datenbank-Experten kein Problem: Wir ben&ouml;tigen nur eine Beschreibung der gew&uuml;nschten Schnittstelle und liefern dann die Daten in der gew&uuml;nschten Form.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/DHLVersand_vorbereiten\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-13T21:19:13+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg06.met.vgwort.de\/na\/0dddbf94295f4d53af6d29fac5480da9\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"22\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DHLVersand_vorbereiten\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DHLVersand_vorbereiten\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"DHL-Versand vorbereiten\",\"datePublished\":\"2020-05-13T21:19:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DHLVersand_vorbereiten\\\/\"},\"wordCount\":3578,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DHLVersand_vorbereiten\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/0dddbf94295f4d53af6d29fac5480da9\",\"articleSection\":[\"2\\\/2018\",\"2018\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/DHLVersand_vorbereiten\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DHLVersand_vorbereiten\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DHLVersand_vorbereiten\\\/\",\"name\":\"DHL-Versand vorbereiten - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DHLVersand_vorbereiten\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DHLVersand_vorbereiten\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/0dddbf94295f4d53af6d29fac5480da9\",\"datePublished\":\"2020-05-13T21:19:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DHLVersand_vorbereiten\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/DHLVersand_vorbereiten\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DHLVersand_vorbereiten\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/0dddbf94295f4d53af6d29fac5480da9\",\"contentUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/0dddbf94295f4d53af6d29fac5480da9\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DHLVersand_vorbereiten\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DHL-Versand vorbereiten\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"DHL-Versand vorbereiten - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/DHLVersand_vorbereiten\/","og_locale":"de_DE","og_type":"article","og_title":"DHL-Versand vorbereiten","og_description":"Ende Februar 2018 hat DHL die Unterst&uuml;tzung der Intraship-Schnittstelle beendet. Das hei&szlig;t, dass wir unsere DHL-Etiketten nun auf eine andere Weise erstellen m&uuml;ssen. F&uuml;r Datenbank-Experten kein Problem: Wir ben&ouml;tigen nur eine Beschreibung der gew&uuml;nschten Schnittstelle und liefern dann die Daten in der gew&uuml;nschten Form.","og_url":"https:\/\/access-im-unternehmen.de\/DHLVersand_vorbereiten\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-13T21:19:13+00:00","og_image":[{"url":"http:\/\/vg06.met.vgwort.de\/na\/0dddbf94295f4d53af6d29fac5480da9","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"22\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/DHLVersand_vorbereiten\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/DHLVersand_vorbereiten\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"DHL-Versand vorbereiten","datePublished":"2020-05-13T21:19:13+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/DHLVersand_vorbereiten\/"},"wordCount":3578,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/DHLVersand_vorbereiten\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/0dddbf94295f4d53af6d29fac5480da9","articleSection":["2\/2018","2018","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/DHLVersand_vorbereiten\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/DHLVersand_vorbereiten\/","url":"https:\/\/access-im-unternehmen.de\/DHLVersand_vorbereiten\/","name":"DHL-Versand vorbereiten - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/DHLVersand_vorbereiten\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/DHLVersand_vorbereiten\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/0dddbf94295f4d53af6d29fac5480da9","datePublished":"2020-05-13T21:19:13+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/DHLVersand_vorbereiten\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/DHLVersand_vorbereiten\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/DHLVersand_vorbereiten\/#primaryimage","url":"http:\/\/vg06.met.vgwort.de\/na\/0dddbf94295f4d53af6d29fac5480da9","contentUrl":"http:\/\/vg06.met.vgwort.de\/na\/0dddbf94295f4d53af6d29fac5480da9"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/DHLVersand_vorbereiten\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"DHL-Versand vorbereiten"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55001127"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001127\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}