Ausgabe von Adressreferenzen

Adressangaben spielen an vielen Stellen in MuseumPlus eine wichtige Rolle. Hier beschreiben wir, wie diese Informationen kompakt und ansprechend formatiert ausgegeben werden können. 

An vielen Stellen in MuseumPlus existieren Verknüpfungen zum Adressmodul. Zum Beispiel im Modul Leihvertrag sind die Adressen von Leihgeber, Leihnehmer, die Kontaktadressen, die Transportfirma und die Versicherung als Verknüpfungen zum Adressmodul realisiert. Sollen diese Angaben z.B. in einer Liste oder einem Bericht ausgegeben werden, kann man nicht auf ein einfaches Textfeld zurückgreifen, sondern muss etwas mehr Aufwand betreiben.

Prinzipiell bestehen zwei Möglichkeiten: Zum einen kann man für die Ausgabe auf die Funktion DLOOKUP zurückgreifen. Dabei hat man die Möglichkeit, sehr genau zu steuern, welche Angaben aus dem Adressdatensatz ausgegeben werden sollen. Die andere Möglichkeit ist die Verwendung einer internen MuseumPlus-Funktion mit der Bezeichnung vSetAnschriftId, welche eine fertig formatierte Adresse im Etikettenformat unter Berücksichtigung aller landesspezifischen Formatierungsregeln generiert.

Verwendung der Funktion DLOOKUP

Die grundsätzliche Syntax und Verwendung der Funktion DLOOKUP habe ich ja bereits an anderer Stelle beschrieben. Deswegen zeige ich hier nur noch einige Beispiele, die direkt in Berichtsdefinitionen verwendet werden können.

Das erste Beispiel liefert für einen Bericht im Modul Sammlung die Institution sowie den Vornamen und Namen des Besitzers des Sammlungsobjektes (Verwaltende Institution / Standort-Museum):

=DLOOKUP("sprintf('%s%[ ]s%[ ]s', AdrInstitutionS, AdrVornameS, AdrNameS)","AdrDaten","AdrId=" & [ObjStandAdrId]")

In diesem Beispiel wird innerhalb der Funktion DLOOKUP noch eine Funktion mit der Bezeichnung sprintf aufgerufen. Es handelt sich dabei um eine MuseumPlus-interne Funktion, welche dafür sorgt, dass, falls eines der Felder Institution, Name oder Vorname nicht ausgefüllt sind, keine überzähligen Leerzeichen ausgegeben werden. Diese Funktion gehört allerdings nicht zum Wortschatz von VisualBasic und kann daher auch nur in MuseumPlus verwendet werden. In einer klassischen Access-Umgebung steht sie nicht zur Verfügung.

Das zweite Beispiel funktioniert ähnlich, gibt jedoch einfach nur das Feld Katalogeintrag aus dem Adressdatensatz aus:

=DLOOKUP("AdrKatalogEintragS","AdrDaten","AdrId=" & [ObjStandAdrId]")

Dieses Beispiel kann sehr einfach auf andere Felder aus dem Modul Adresse abgewandelt werden. Dazu benötigt man einfach nur den internen (generischen) Feldnamen des auszugebenden Datenfeldes aus dem Modul Adresse. Der einfachste Weg, diesen zu erhalten ist, im Modul Adresse die Einfügemarke in das entsprechende Feld zu setzen und die Tastenkombination <Strg>-<I> zu betätigen. Es öffnet sich dann ein Dialogfenster, in dem unter anderem auch der generische Feldname des Datenfeldes ausgegeben wird.

Das letzte Beispiel ist wieder etwas komplizierter. Nicht alle Angaben der Adresse sind in einer Datenbanktabelle gespeichert. Zum Beispiel sind alle Telefonnummern und E-Mail-Adressen der Adresse zusammen in einer separaten Tabelle untergebracht. Das bedeutet, man kann diese Felder nicht ohne weiteres zusammen mit anderen Feldern aus dem Adressmodul über einen DLOOKUP-Aufruf auslesen. Ich würde der Einfachheit halber in diesem Fall zwei DLOOKUP-Aufrufe in die Listendefinition einfügen: Eine für die Adressangaben wie Institution, Name und Vorname, eine zweite z.B. für die Telefonnummer. Sollen weitere Angaben wie E-Mail-Adresse etc. ausgegeben werden, würde ich dafür weitere DLOOKUP-Aufrufe einsetzen. So könnte dann die komplette Abfrage aussehen:

=DLOOKUP("sprintf('%s%[ ]s%[ ]s', AdrInstitutionS, AdrVornameS, AdrNameS)","AdrDaten","AdrId=" & [ObjStandAdrId]")

Und für die Telefonnummer:

=DLOOKUP("AkoTextS","AdrKommunikation","AkoArtS='Telefon' AND AkoAdrId=" & [ObjStandAdrId]")

Und zum Beispiel für die E-Mai-Adresse:

=DLOOKUP("AkoTextS","AdrKommunikation","AkoArtS='E-Mail' AND AkoAdrId=" & [ObjStandAdrId]")

Durch Austauschen der Angabe des Kommunikationstyps (Telefon, Fax, E-Mail) kann also jeder Eintrag aus der Liste der Kommunikationsangaben einer Adresse ausgegeben werden.

Verwendung der Funktion vSetAnschriftId

Wem das Zusammensetzen der einzelnen Felder aus dem Adressmodul über einen entsprechenden DLOOKUP-Aufruf zu aufwendig ist, oder wer ohnehin die komplette Adresse für die Ausgabe benötigt, der kann auf eine interne Funktion aus MuseumPlus zurückgreifen, die genau dies erledigt. Die Syntax dieser Funktion ist sehr einfach:

=vSetAnschriftId([AdrId])

Als [AdrId] kann dabei jedes Datenfeld eingesetzt werden, welches eine gültige Adress-ID (also Datensatznummer aus dem Modul Adresse) enthält. Weiter unten in diesem Beitrag liste ich einige der am häufigsten verwendeten Felder mit Adress-IDs auf.

Ein typischer Aufruf für vSetAnschriftId ist zum Beispiel die Ausgabe von Leihnehmer- und Leihgeberadresse aus dem Modul Leihvertrag:

=vSetAnschriftId([LeiLeihAdrId])

bzw.

=vSetAnschriftId([LeiLeih2AdrId])

Die Funktion vSetAnschriftId nimmt bei der Ausgabe automatisch die landesspezifische Formatierung der Adresse vor. Bei Adressen aus Großbritannien und den USA wird z.B. die Postleitzahl nach dem Ort und die Landesbezeichnung nur bei ausländischen Adressen mit ausgegeben. Diese Funktionen sind abhängig von den Systemeinstellungen von MuseumPlus.

Beispiele für Adressbezüge in MuseumPlus

An dieser Stelle liste ich eine Auswahl häufig verwendeter Adressbezüge in MuseumPlus auf. Das ist insofern ganz nützlich, als man die Namen der entsprechenden Datenfelder nicht über die Tastenkombination <Strg>-<I> herausbekommt.

Modul Sammlung

  • Verwaltende Institution / Standort-Museum: ObjStandAdrId
  • Leihgeber: ObjLeihAdrId
  • Adressbezug in Handel und Werte: OweAdrId
  • Adressbezug in Provenienz: OprAdrId

Modul Künstler / Beteiligte

  • Künstler-Adresse: KueAdrId

Modul Restaurierung

  • Restaurator: ResAdrId
  • Beteiligte: RabAdrId

Modul Leihvertrag

  • Leihgeber: LeiLeihAdrId
  • Leihgeber (Kontakt): LeiLeihKontaktAdrId
  • Leihnehmer: LeiLeih2AdrId
  • Leihnehmer (Kontakt): LeiLeih2KontaktAdrId
  • Versicherung: LeiVersichAdrId
  • Transportfirma: LeiTransAdrId
  • Abholadresse: LeiAbholAdrId
  • Rückgabeadresse: LeiRueckAdrId

Modul Transport

  • Transportfirma: TraFirmaL
  • Lieferadresse: TraLieferAdrId

Modul Veranstaltung

  • Veranstaltungsleitung: VanLeitAdrId
  • Kontakt: VanKontaktAdrId
  • Institution: VanInstitutionAdrId