Internetmarke mit Access nutzen Im Artikel CSV-Export für Adressen haben wir uns mit der Vorbereitung von Adressdaten für den Einsatz mit dem Versanddienstleister Hermes beschäftigt. Dieser versendet allerdings nur Pakete und zweitens wollen wir uns hier ja nicht einseitig mit dem Angebot eines einzelnen Unternehmens beschäftigen. Deshalb und weil ich damit gerade einige Erfahrungen sammeln durfte, schauen wir uns im vorliegenden Artikel die Möglichkeiten an, die Internetmarke der Deutschen Post für unsere Zwecke einzusetzen. Beispieldatenbank Die Beispiele dieses Artikels finden Sie in der Datenbank 1210_Internetmarke.mdb. Internetmarke nutzen Die Internetmarke ist ein relativ neues Angebot der Deutschen Post, um online verschiedene Medien mit Porto zu bedrucken. Wer einen solchen Dienst von Access aus nutzt, der hat nicht nur im Sinn, gelegentlich eine Briefmarke auszudrucken, sondern wird auf Basis der Adressen in seiner Datenbank eine oder mehrere Adressetiketten erstellen wollen. Das Ergebnis wird in Form einer ein- oder mehrseitigen PDF-Datei geliefert. In meinem Fall wurden Etiketten mit den Maßen 62 x 100 mm für einen Brother-Etikettendrucker benötigt. Das Ergebnis sah beispielsweise wie in Bild 1 aus. Dazu sind folgende Dinge nötig: Eine Abfrage, welche die Adressdaten in einem geeigneten Format liefert, das auf Basis dieser Abfrage exportierte Ergebnis in Form einer.csv-datei, eine Portokasse bei der deutschen Post sowie Bild 1: Startpunkt beim Erstellen von Internetmarken zum Erstellen von Internetmarken ausprobiert. Das erste bezieht sich auf reguläre deutsche oder ausländische Empfänger, das zweite auf Sendungen, die an Packstationen geschickt werden sollen. Es gibt noch zwei weitere Formate für den Versand an ein Postfach und für den Versand an Großempfänger mehr Informationen hierzu finden Sie unter https:// internetmarke.deutschepost.de/internetmarke/ content/help.do. ein Zugang zum Angebot Internetmarke. Wir kümmern uns in diesem Artikel zunächst um die Gestaltung der zur Übergabe von Adressen benötigten.csv-datei, schauen uns dann die die Übergabe dieser Datei an das Online-Angebot der Post an und erstellen dann schließlich die gewünschte.csv-datei mit Access. Ich habe bislang zwei verschiedene Formate für die Übergabe von Adressdaten Bild 2: Startpunkt beim Erstellen von Internetmarken Seite 13
Die erste Variante ist wie in Bild 2 aufgebaut. Die einzelnen Zeilen enthalten in dieser Reihenfolge folgende Informationen: Feldnamen (eine Zeile), Daten für den Versender (eine Zeile) und Empfängerdaten (eine oder mehrere Zeilen). Bild 3: Test-CSV-Datei zur Ermittlung der Zeichenzahl je Feld Die zulässige Länge der Daten für die einzelnen Felder, die übrigens durch Semikola voneinander getrennt werden, entsprach in der Praxis nicht den Vorgaben in der Hilfe. Damit Sie zuverlässige Informationen erhalten, haben wir geprüft, welche Felder wieviele Zeichen aufnehmen können. Dabei hilft eine.csv- Datei, die verschieden lange Einträge je Feld enthält (siehe Bild 3). Mit dieser Testdatei öffnen wir nun das Internetangebot der Post (http://www.post. de) und klicken dann links auf Briefmarken kaufen Internetmarke. Es erscheint der Dialog aus Bild 4. Hier können Sie sich, sofern Sie bereits über einen Zugang verfügen, einloggen (oben über den Link Login). Dies ist vorteilhaft, da einige zuletzt verwendete Einstellungen wie etwa das Papierformat übernommen werden. Danach klicken Sie auf Internetmarken für Briefe. Bild 4: Startpunkt beim Erstellen von Internetmarken Dies zeigt eine andere Ansicht des vorherigen Schrittes an (siehe Bild 5). Sie können hier nun einfach das Porto drucken lassen, aber das ist ja nicht unser Ziel. Stattdessen klicken Sie auf Adresse hinzufügen, um weitere Optionen zu erhalten zum Beispiel über den Eintrag Adress-Datenimport (siehe Bild 6). Klicken Sie auf diesen Eintrag, erscheint ein HTML- Popup, das einen Dateiauswahl-Dialog anbietet, um die.csv-datei auf Ihrem Rechner hochzuladen. Nach der Auswahl klicken Sie auf Datei hochladen, um die Daten auf den Server der Post zu übertragen (siehe Bild 7). Bild 5: Einblenden der Befehle zum Hinzufügen von Adressen Nach dem Hochladen zeigt ein Dialog das Ergebnis an. Sollten Fehler aufgetreten sein (was bei unserer Testdatei zu erwarten war), zeigt der Dialog diese Seite 14
nun an. Leider gibt es keine explizite Fehlerbeschreibung, sondern nur den Hinweis auf den jeweils falschen Eintrag. Bei der Testdatei haben wir beispielsweise die Werte 1, 12, 123 und so weiter für das Feld PLZ angegeben. War gleichzeitig Deutschland als Empfängerland festgelegt, führen alle Werte, die nicht aus fünf Ziffern bestehen, zu einem Fehler. Bei ausländischen Adressen ist der Dienst etwas lässiger: hier können Sie auch andere Werte eintragen. Sie müssen also schon genau kontrollieren, ob die PLZ zum angegebenen Länderkennzeichen passt. Bild 6: Hinzufügen von Adressen per Datenimport Eigentlich wollten wir mit der Testdatei ermitteln, wie lang die einzelnen Einträge für die verschiedenen Felder sein dürfen. Das Ergebnis sieht so aus: Name: 50 Zeichen Zusatz: 50 Zeichen Bild 7: Hinzufügen von Adressen per Datenimport Straße: 35 Zeichen Nummer: 10 Zeichen PLZ: je nach Land, maximal 59 Zeichen Ort: 35 Zeichen Länderkennzeichen Die Länderkennzeichen sind zweistellig. Eine Liste der Kennzeichen (zum Beispiel DE für Deutschland) finden Sie unter folgendem Link: Bild 8: Prüfen des Ergebnisses des Uploads http://de.wikipedia.org/wiki/iso-3166-1-kodierliste Etiketten erstellen Davon ausgehend, dass alle Einträge in Ihrer.csv- Datei korrekt sind, können Sie nun die gewünschten Einträge auswählen. Ein Tipp vorneweg: Wenn Sie Sendungen mit verschiedenen Beträgen frankieren möchten, wählen Sie zunächst die Adressen für den ersten Betrag aus (siehe Bild 9). Nachdem Sie den Dialog mit OK geschlossen haben, können Sie sich die Vorschau für die Etiketten ansehen. Bild 9: Auswählen der Adressaten Seite 15
Legen Sie dann oben fest, ob Sie einen Standardbrief, einen Kompaktbrief oder eine andere Sendung frankieren möchten. Geben Sie dort außerdem die Anzahl ein wobei diese bei der Erstellung von Frankierungen für mehrere Kunden wohl 1 lauten dürfte. Außerdem müssen Sie noch das Papierformat auswählen. Hier ist standardmäßig DIN A4 Normalpapier eingestellt. Wenn Sie auf ein anderes Medium drucken möchten, klicken Sie rechts auf Papierformat ändern. Die Angabe des anfänglich angegebenen Mediums wird in ein Auswahlfeld umgewandelt, sodass Sie eines der verfügbaren Formate auswählen können. Es gibt eine ganze Reihe Formate in meinem Fall etwa (siehe Screenshot oben) kam der Eintrag Brother DK-11202 Versand-Etikett 62 x 100 zum Einsatz. Weitere Frankierungen Wenn Sie verschiedene Frankierungen mit einem Bezahlvorgang abwickeln möchten, klicken Sie unter den Daten für die soeben angelegten Frankierungen wieder auf den Eintrag Internetmarken für Briefe. Es erscheint erneut der oben bereits vorhandene Bereich, sodass Sie nun erneut die Adressen einlesen, die Adressaten auswählen und die Portoart sowie das Papierformat festlegen können. Bezahlart Danach klicken Sie auf die Schaltfläche Weiter und gelangen zum zweiten Schritt. Hier erhalten Sie eine Übersicht über die Bestellung. Wenn Sie noch nicht angemeldet sind, finden Sie hier nur die beiden Bezahlarten PayPal und Onlineüberweisung vor. Wenn Sie sich einloggen, erscheint außerdem noch der Eintrag Lastschrift. Gegebenenfalls haben Sie bereits eine Portokasse bei der Post eingerichtet. Diese können Sie mit dem gewünschten Betrag aufladen, beispielsweise per Lastschrift. Sollte das aktuell bestellte Porto durch das Guthaben der Portokasse gedeckt sein, können Sie dieses gleich bestellen. Anderenfalls laden Sie die Portokasse auf. Das Einrichten der Portokasse und weitere Details der Bezahlung klammern wir an dieser Stelle aus Platzgründen jedoch aus. Bild 10: Übernahme der Daten und Angabe der Zahlungsmethode Wichtig ist nur Folgendes: Sollten Sie mal in die Verlegenheit kommen, kurzfristig sehr viel Porto zu drucken, könnten Sie scheitern: Sie können nämlich nur Porto in Höhe eines begrenzten Betrags pro Zeitraum ordern. Sollten Sie mehr benötigen, können Sie das Budget jedoch per Anruf bei der Hotline erhöhen lassen. Und noch ein wichtiger Hinweis: Nach meiner Erinnerung (meine Anmeldung liegt nun bereits eine Weile zurück) erhält man nicht umgehend Zugriff auf die Portokasse. Gegebenenfalls müssen Sie dann eine der übrigen Bezahlarten wie PayPal oder Onlineüberweisung nutzen. Porto herunterladen Schließlich folgt noch der letzte Schritt des Porto- Assistenten (siehe Bild 11). Hier können Sie zwei Dokumente herunterladen: erstens ein PDF-Dokument mit dem Porto (im Bei- Seite 16
spiel für den Ausdruck eines Etiketts von 62 x 100 mm) sowie den Lieferschein. Nach dem Herunterladen des Portos können Sie dieses mit dem gewünschten Drucker ausdrucken und weiterverwerten. Adressdaten bereitstellen Nun kommt der Access-Part dieses Artikels: Sie wissen nun zwar, wie Sie auf Basis einer fertigen.csv-datei einen Porto-Ausdruck erstellen können. Es fehlt allerdings noch ein Weg, aus einer üblichen Adresstabelle die benötigten Daten zu extrahieren und in Form einer.csv-datei bereitzustellen. Die Beispieldatenbank liefert die Adressen in einer Tabelle namens tblkunden, wobei diese noch über das Feld AnredeID mit der Tabelle tblanreden verknüpft ist (siehe Bild 12). Bild 11: Download des Portos und des Lieferscheins Abfrage erstellen Länderkürzel Die Länderkürzel könnten Sie in einem weiteren Feld der Tabelle tblkunden speichern, allerdings würde dies redundante Daten liefern. Also erstellen Sie eine weitere Tabelle namens tbllaender, welche die drei Felder LandID (Primärschlüsselfeld mit Autowert), Land und Kuerzel enthält (siehe Bild 13). In der gleich zu erstellenden Abfrage werden wir die Tabelle tblkunden über das Feld Land mit dem gleichnamigen Feld der Tabelle tbllaender verknüpfen, um das jeweilige Länderkürzel zu ermitteln Um die hier vorliegenden Daten in die gewünschte Form zu bringen, verwenden Sie eine Abfrage. Erstellen Sie diese zunächst neu und fügen Sie aus dem Dialog Tabelle anzeigen die Tabelle tblkunden und die Tabelle tblanreden zum Entwurf der Abfrage hinzu. Außerdem benötigen wir die Tabelle tbllaender, die Sie wie in Bild 14 dargestellt und weiter oben beschreiben mit der Tabelle tblkunden verknüpfen. Die Abfrage soll die Daten genau so liefern, wie diese in der oben beschriebenen.csv-datei aussehen. Dabei sollen folgende Vereinbarungen getroffen werden: Bild 12: Die Tabelle tblkunden dient als Datenherkunft Seite 17
Wenn das Feld Firma des Datensatzes gefüllt ist, wird diese in die Spalte Name eingetragen. Die Anrede, der Vorname und der Nachname landen dann in der Spalte ZUSATZ. Ist das Feld Firma des Datensatzes leer, landet die Anrede im Feld NAME und der Vorname und der Nachname in der Spalte ZUSATZ. Bei der Anrede wird Herr durch Herrn ersetzt. Die Hausnummer wird in der Datenbank nicht in einem separaten Feld gespeichert, daher tragen wir diese immer zusammen mit der Straße in der Spalte STRASSE ein. Bild 13: Ländertabelle Das Kürzel beziehen wir in Abhängigkeit vom Land aus der Tabelle tbllaender. Beginnen wir also mit den Ausdrücken, die wir von links nach rechts in das Entwurfsraster einfügen genau in der gleichen Reihenfolge, wie diese in der.csv-datei erwartet werden. Das erste Feld heißt NAME und soll entweder den Wert des Feldes Firma oder, sollte dieses Feld leer sein, die Anrede enthalten bei der männlichen Anrede jedoch nicht Herr, sondern Herrn. Also formulieren wir den folgenden Ausdruck, wobei der Teil vor dem Doppelpunkt den später angezeigten Feldnamen liefert und der Teil hinter dem Doppelpunkt die Funktion zum Ermitteln des Feldwertes: NAME: Nz([Firma];Wenn([Anrede]="Herr";"Herrn";"Frau")) In diesem Fall prüft die Funktion Nz den Wert des Feldes Firma. Ist die Firma vorhanden, wird diese ausgegeben, sonst der Ausdruck, der als zweiter Parameter für diese Funktion angegeben wurde. Dabei handelt es sich um eine Wenn-Funktion, die den im ersten Parameter angegebenen Ausdruck auf den Wert True oder False prüft. Im Falle von True gibt die Funktion den im zweiten Parameter angegebenen Ausdruck zurück, sonst den Wert des dritten Parameters. Das bedeutet in diesem Fall: Enthält das Feld Anrede den Wert Herr, liefert die Funktion Herrn, sonst Frau. Das Feld ZUSATZ liefert einen Ausdruck, der vom Vorhandensein eines Wertes im Feld Firma abhängt. Hat Firma einen Wert, soll die Anrede nicht unter NAME, sondern unter ZUSATZ erscheinen. Dahinter Bild 14: Tabellen der Abfrage qryinternetmarke folgen in jedem Fall der Vorname und der Nachname. Dies erledigt der folgende Ausdruck: ZUSATZ: Wenn(IstNull([Firma]);"";Wenn([Anrede]=" Herr";"Herrn";"Frau")) & " " & [Vorname] & " " & [Nachname] Hier kommt direkt eine Wenn-Funktion zum Einsatz. Diese prüft, ob Firma den Wert Null hat. Falls ja, liefert Wenn eine leere Zeichenkette, falls nein, wird mit einer weiteren Wenn-Funktion die Anrede ermittelt und noch um ein Leerzeichen ergänzt. Das Ergebnis wird auf jeden Fall um den Vor- und den Nachnamen ergänzt getrennt durch ein Leerzeichen. Bei der Straße, der PLZ, dem Ort und dem Land sieht es einfacher aus. Die Straße wird durch den folgenden Ausdruck abgebildet: STRASSE: [Strasse] Grundsätzlich hätte man hier auch einfach das Feld Strasse angeben können, aber in der Vorlage für die.csv-datei wurden auch alle Spaltenköpfe in großen Seite 18
Bild 15: Entwurf der Abfrage qryinternetmarke Buchstaben geschrieben. Für die Hausnummer geben wir einfach eine leere Zeichenkette an: NUMMER: "" Für die PLZ können wir wegen der vorhandenen Großschreibung einfach den Feldnamen angeben: PLZ Die Spalte STADT wird mit dem Inhalt des Feldes ORT gefüllt: STADT Beim LAND benötigen wir ja nicht die komplette Bezeichnung, sondern nur das Kürzel. Da dieses über das Feld Land mit der Tabelle tblkunden verknüpft ist, können Sie einfach das Feld Kuerzel als Feld für die Spalte LAND angeben: LAND: Kuerzel Fehlt noch die Spalte ADRESS_TYP, die in unserem Fall immer den Wert HOUSE annehmen soll (für andere Adresstypen wie Packstationen et cetera kommen andere Werte zum Einsatz): ADRESS_TYP: "HOUSE" Im Entwurf sieht die Abfrage nun wie in Bild 15 aus. Der Inhalt der Spalte Zusatz ist nicht komplett abgebildet, Sie finden diesen jedoch weiter oben im Text. Das Ergebnis dieser Abfrage finden Sie in Bild 16..csv-Datei erstellen Mit dieser Abfrage ausgestattet benötigen Sie nur noch einen Export, um die gewünschte.csv-datei zu erstellen. Diese erstellen Sie, indem Sie die Abfrage zunächst schließen und dann aus dem Kontextmenü des Eintrags qryinternetmarke den Eintrag Exportieren Textdatei auswählen. Bild 16: Die Abfrage qryinternetmarke liefert die Daten für den Export in die.csv-datei. Seite 19
Unter Access 2010 (andere Versionen ähnlich) erscheint der Dialog aus Bild 17. Geben Sie den Zielpfad ein oder wählen Sie diesen über den Dateiauswahl-Dialog aus, der beim Klick auf die Schaltfläche Durchsuchen... erscheint. Klicken Sie auf OK, um den eigentlichen Textexport- Assistenten zu starten. Die erste Seite des Dialogs können Sie gleich mit einem Klick auf die Schaltfläche Weiter überspringen die Option Mit Trennzeichen... behalten Sie einfach bei. Auf der folgenden Seite legen Sie fest, dass die Feldnamen in die erste Zeile einbezogen werden sollen. Außerdem soll der Export kein Textbegrenzungszeichen verwenden. Klicken Sie dann auf Weiter, um nochmals den Namen der Zieldaten zu prüfen oder direkt auf Fertigstellen. Bild 17: Auswahl der Zieldatei für den Export Fertig die Datei wird nun auf Basis Ihrer Angaben erstellt. Absenderzeile hinzufügen Nun fehlt noch eine Feinheit: Die.csv-Datei soll in der ersten Zeile die Absenderadresse enthalten, was aber noch nicht der Fall ist. Sie haben nun zwei Möglichkeiten: Bild 18: Festlegen der Export-Parameter Entweder Sie fügen diese Zeile von Hand nachträglich ein oder Sie ändern die Abfrage qryinternetmarke so, dass diese immer automatisch Ihre Absenderdaten in der ersten Zeile anzeigt. Wenn Sie gelegentlich Internetmarken ordern möchten, sollten Sie den zweiten Weg gehen. Zu beachten ist dabei, dass sich Ihre Absenderdaten im ersten Datensatz befinden müssen. Um dies zu erreichen, erstellen Sie zunächst eine Kopie der Abfrage qryinternetmarke, und zwar unter dem Namen qryinternetmarkemitabsender dies gelingt am schnellsten, wenn Sie die Abfrage im Datenbankfenster (Access 2003 und älter) beziehungsweise im Navigationsbereich (Access 2007 und Seite 20
Bild 19: Diese UNION-Abfrage fügt die Absenderdaten hinzu. jünger) markieren, die Tastenkombination Strg + C und Strg + V betätigen und den Namen der neuen Abfrage festlegen. Öffnen Sie die Abfrage in der Entwurfsansicht, klicken Sie mit der rechten Maustaste auf die Titelleiste der Abfrage und wählen Sie aus dem Kontextmenü den Eintrag SQL-Ansicht aus. Stellen Sie dem dort zu erkennenden SQL-Ausdruck die folgende SELECT- Abfrage voran gefolgt vom Schlüsselwort UNION: Seite 21