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.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 1/2012.

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

Zusammenfassung

Speichern Sie den Adressblock in einem separaten Feld, um manuelle Änderungen speichern zu können.

Techniken

Tabellen, Berichte

Voraussetzungen

Access 2000 und höher

Beispieldateien

AdressenFuerBerichte.mdb

Shortlink

www.access-im-unternehmen.de/817

Adressen für Berichte aufbereiten

André Minhorst, Duisburg

Die Ausgabe von Adressen in Berichten ist doch ein alter Hut. Sie platzieren die einzelnen Felder mit den betroffenen Daten dort, wo die Adresse erscheinen soll - fertig! Aber halt: Manchmal ist es doch nicht so einfach. Wenn beispielsweise Adresselemente wie die Straße fehlen, kommt es mitunter zu unschönen Lücken im Adressblock. Aber auch die Lösung zu diesem Problem ist bereits bekannt. Dieser Beitrag stellt kurz die gängigen Vorgehensweisen vor und zeigt dann eine alternative Methode, um Adressblöcke perfekt zusammenzustellen.

Wer noch nicht lange mit Access arbeitet, wird beim ersten Versuch, Adressdaten zu einem Adressblock zusammenzuführen, wohl einfach die betroffenen Felder an die entsprechende Stelle im Entwurf des Berichts ziehen.

Dies kann funktionieren, tut es aber nicht zwangsläufig: Adressdaten kommen nämlich längst nicht immer in der gleichen Zusammenstellung daher. Mal gehört eine Firma zu einer Adresse, mal mit, mal ohne Ansprechpartner, mal geht die Post an eine einzelne Person, die mit entsprechender Anrede zu versehen ist, mal fehlt die Straße. Gelegentlich fügen eifrige Benutzer die Länderkennzeichnung zur Postleitzahl hinzu, was früher hilfreich war, heute aber eher stört: Immerhin bereits seit einer Änderung der DIN 5008 im Jahr 2001 sollen die Länderkennzeichen für Auslandssendungen nicht mehr vor die Postleitzahl gesetzt werden, sondern das Land ausgeschrieben in der letzten Zeile des Adressblocks erscheinen. Es gilt also nicht mehr:

Herrn

André Minhorst

Borkhofer Straße 17

D-47137 Duisburg

Stattdessen ist seit 2001 folgende Notation zu verwenden:

Herrn

André Minhorst

Borkhofer Straße 17

47137 DUISBURG

DEUTSCHLAND

Dies gilt allerdings auch nur für Sendungen ins Ausland (dieses Beispiel ist also streng genommen falsch) - für Inlandssendungen wird schlicht kein Land angegeben.

Bei Auslandssendungen werden Ort und Land in Großbuchstaben angegeben, der Ort in Landessprache, das Land in Deutsch, Englisch oder Französisch. Es gibt keine Leerzeilen im Adressblock! Zusätzliche Vermerke wie Einschreiben, Warensendung et cetera landen in der ersten Zeile:

Einschreiben

Herrn

André Minhorst

Borkhofer Straße 17

47137 DUISBURG

Ist eine Firmenbezeichnung im Spiel, landet diese über dem Namen eines eventuell vorhandenen Adressaten, aber unter einem Zusatzvermerk. Bei Firmenbezeichnung und Adressat gehört die Anrede in die gleiche Zeile wie der Adressat, sonst eine Zeile darüber:

Redaktionsbüro Minhorst

Herrn André Minhorst

Borkhofer Straße 17

47137 DUISBURG

Wenn eine Sendung mit Personenangabe wie oben an eine Firma geschickt wird, wird diese geöffnet und dann weitergeleitet. Soll diese nicht geöffnet werden, vertauscht man Adressat und Firma:

Herrn André Minhorst

Redaktionsbüro Minhorst

Borkhofer Straße 17

47137 DUISBURG

Beispieltabelle

Als Beispieltabelle verwenden wir zunächst die Tabelle tblAdressenEinfach der Beispieldatenbank. Diese enthält die Felder Firma, AnredeID, Vorname, Nachname, Strasse, PLZ, Ort und Land (s. Abb. 1).

pic002.png

Abb. 2: Erweitern der Adressen um das Anrede-Feld der Anreden-Tabelle

Einfache Variante: Einzelne Felder

Wenn Sie die Felder Ihrer Adresstabelle in einem Bericht platzieren möchten, erledigen Sie dies am einfachsten durch direktes Einfügen der Felder im Bericht. Wenn Sie die Anrede wie in der Beispieltabelle in einer separaten Tabelle etwa namens tblAnreden speichern, können Sie diese auf zwei Arten in den Bericht holen: Entweder Sie definieren das Feld AnredeID als Nachschlagefeld oder Sie fügen das Feld über eine Abfrage wie in Abb. 2 zur Datenherkunft des Berichts hinzu. Die erste Variante ist etwas einfacher: Access zeigt das Feld dann als Kombinationsfeld an, später in der Seitenansicht und auch beim Drucken erscheint dieses jedoch als herkömmliches Textfeld (s. Abb. 3). In beiden Fällen müssen Sie normalerweise später nachhelfen: Immerhin lautet die auszuwählende Anrede meist Herr und Frau, zumindest der Herr wird aber im Adressblock als Herrn ausgegeben.

pic001.png

Abb. 1: Beispieltabelle mit Adressen

pic003.png

Abb. 3: Anrede als Nachschlagefeld

Access-Neulinge bauen beim ersten Versuch, einen Adressblock zusammenzustellen, meist so etwas wie in Abb. 4. Sie stellen jedoch schnell fest, dass die Daten nicht immer die passende Breite für die Felder haben. Die nächste Variante fasst dann Elemente in Textfeldern zusammen, damit die hässlichen Zwischenräume verschwinden (s. Abb. 5). Anrede, Vorname und Nachname landen dann etwa in einem Feld namens txtAdressat mit dem folgenden Steuerelementinhalt:

pic004.png

Abb. 4: Einsteiger-Variante

pic005.png

Abb. 5: Verbesserte Einsteiger-Variante

=[Anrede] & " " & [Vorname] & " " & [Nachname]

Leider steht dann im Bericht Herr und nicht Herrn. Dies ändert folgende Anpassung:

=Wenn([AnredeID]=1;"Herrn";"Frau") & " " & [Vorname] & " " & [Nachname]

Nun kann es aber auch vorkommen, dass keine Firma angegeben wurde. Dann soll die Anrede in die erste Zeile rutschen. Die erste Zeile (Textfeld txtFirmaOderAnrede) sieht dann etwa so aus:

=Wenn(Länge([Firma])>0;[Firma];Wenn([AnredeID]=1;"Herrn";"Frau"))

Für die zweite Zeile resultiert daraus folgende Formel:

=Wenn(IstNull([Firma]);"";Wenn([AnredeID]=1;"Herrn";"Frau") & " ") & [Vorname] & " " & [Nachname]

Das Ergebnis sieht schon recht gut aus, wie Abb. 6 zeigt. Fehlt nur noch eine Behandlung von Lücken, die auftreten, wenn bestimmte Elemente wie etwa die PLZ oder die Straße fehlen. Bezogen auf ein komplettes Textfeld ist dies kein Problem: Stellen Sie einfach die Eigenschaft Verkleinerbar auf den Wert Ja ein. Es wird dann mit der Höhe 0cm angezeigt, wenn es leer ist. Die übrigen Felder rutschen entsprechend nach oben. Leider bleiben die Zwischenräume zwischen den Feldern erhalten. Aber auch dies lässt sich verhindern: Wenn Sie den gewünschten Zeilenabstand durch Zwischenräume herstellen, dann können Sie die Höhe der Felder auch so weit vergrößern, dass diese genau aneinander kleben. Die Felder dürfen sich aber nicht berühren, sonst werden leere Felder nicht mehr verkleinert. Auch dürfen sich auf der gleichen Höhe keine weiteren Steuerelemente befinden, da diese ja nicht gleichermaßen minimiert werden können.

pic006.png

Abb. 6: Ist keine Firma vorhanden, landet die Anrede in der ersten Zeile.

Weitere Variante: Alles in ein Textfeld

Sie können auch den kompletten Adressblock in einem einzigen Feld zusammenstellen. Dies ergibt dann einen mehr oder weniger übersichtlichen Ausdruck, der eine Reihe Wenn-Bedingungen, Zeilenumbruch-Codes und verschiedene Verknüpfungsarten (Kaufmanns-Und und Plus-Zeichen) enthält. Den kompletten Ausdruck geben Sie dann als Steuerelement eines einzigen Textfelds an. Wir wollen an dieser Stelle nicht ins Detail gehen.

Erschwernis: Liefer- und Rechnungsadressen

In vielen Fällen kommen Sie mit einer einzigen Adresse pro Kunde nicht aus. Zwar muss man nicht immer gleich wie Amazon die Möglichkeit bieten, endlos viele Adressen je Kunde einzutragen, aber eine Liefer- und eine Rechnungsanschrift je Kunde kann schon nicht schaden. Dem wird beispielsweise die Tabelle aus Abb. 7 gerecht. Sie enthält jedes Feld je einmal für die Liefer- und die Rechnungsanschrift, was durch entsprechende Suffixe verdeutlicht wird.

pic007.png

Abb. 7: Tabellen mit Daten für Rechnungs- und Lieferadresse

Wer keine redundanten Daten mag, wird für Kunden, deren Rechnungs- und Lieferanschrift identisch ist, nur eine der beiden Anschriften angeben. In diesem Fall brauchen Sie je nach benötigter Anschrift für jedes Feld noch eine weitere Unterscheidung: Soll Firma, Anrede, Vorname et cetera der Rechnungs- oder der Lieferanschrift verwendet werden? Wenn Sie alle Informationen in einem einzigen Ausdruck unterbringen möchten, wird dieser sehr unübersichtlich und auch die Fehleranfälligkeit steigt. Ganz zu schweigen von der Tatsache, dass nachträgliche Änderungen eine echte Herausforderung sind.

Dies wird etwas vereinfacht, wenn Sie sich zu ein wenig Redundanz hinreißen lassen, wie es etwa im Beitrag Liefer-, Rechnungs- und sonstige Adressen (www.access-im-unternehmen.de/813) beschrieben wird. Wenn Sie auch bei Vorhandensein nur einer Adresse sowohl die Rechnungs- als auch die Lieferanschrift entsprechend füllen, brauchen Sie zwar einen Ausdruck mehr, dafür fallen beide Ausdrücke aber wesentlich einfacher aus.

Sonderfälle

Wahrscheinlich können Sie noch so viele Felder für die Eingabe von Adressdaten bereitstellen: Irgendein Kunde wird doch wieder mit der Umsetzung seiner Anschrift unzufrieden sein. Außerdem sollten Sie möglichst einen guten Kompromiss zwischen vielen Details bei der Aufnahme einer Kundenadresse und geringer Komplexität finden. So wäre es zum Beispiel denkbar, einfach standardmäßig die folgenden Daten abzufragen:

  • Firma
  • Anrede
  • Vorname
  • Nachname
  • Straße und Hausnummer, gegebenenfalls getrennt
  • PLZ
  • Ort

Wenn der Kunde seine Daten selbst einträgt (etwa über ein Online-Bestellformular), fehlt ihm hier möglicherweise etwa ein Feld, um eine Abteilung wie etwa Buchhaltung anzugeben. Sie könnten im Bestellformular einfach ein weiteres Feld namens Abteilung hinzufügen, aber andere Kunden fühlen sich dadurch vielleicht verunsichert, weil sie nicht wissen, was sie dort eintragen sollen (und dann irgendetwas eintragen, was später für Verwirrung sorgt). Gegebenenfalls vergrößern Sie im Bestellformular einfach das Feld Firma - dies ist jedoch bei vorgefertigten Online-Anwendungen auch nicht so einfach. Pfiffige Kunden tragen die Abteilung dann einfach statt eines Ansprechpartners in die Felder Vorname und Nachname ein, was dann bei automatisierter Zusammenstellung des Adressblocks zu interessanten Schöpfungen wie dieser hier führt:

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.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.