Listengeneratorfunktion
Für die Druckausgabe von Werten (Ankaufswert, Versicherungswert etc.) aus dem Sammlungsmodul stellt MuseumPlus im Listengenerator eine Listengeneratorfunktion bereit, mit deren Hilfe diese Werte aus der Datenbank ausgelesen und formatiert ausgegeben werden können. Die Funktion wird an Stelle eines Feldnamens in der Listendefinition hinterlegt und hat folgendes Format:
=<<Handel([Filter,...,Filter,][Paramter])>>
Es kann dabei als Filter ein oder mehrere Werttypen, durch Komma getrennt, angegeben werden. Bei der Ausgabe werden dann nur die Werteinträge mit den entsprechenden Werttypen berücksichtigt.
Als Parameter kann ein numerischer Wert zwischen 0 und 3 angegeben werden, welche die Formatierung der Ausgabe steuern. Wird dieser Parameter weggelassen, benutzt MuseumPlus automatisch den Wert 0.
- 0: Ausgabe durch Seminkolon getrennt in der Form
- 1: Ausgabe durch Seminkolon getrennt in der Form
- 2: Ausgabe durch Zeilenumbruch getrennt in der Form
- 3: Ausgabe durch Zeilenumbruch getrennt in der Form
- 6: (nur MuseumPlus 5.0 und höher) Ausgabe durch Semikolon getrennt in der Form
- 7: (nur MuseumPlus 5.0 und höher) Ausgabe durch Zeilenumbruch getrennt in der Form
Direkter Datenbankzugriff
Ein Nachteil bei der Verwendung der Listengeneratorfunktion ist die fehlende Einflussmöglichkeit auf die exakte Auswahl und Gestaltung der auszugebenden Informationen. Es gibt allerdings noch die Möglichkeit, direkt auf die Datenbank zuzugreifen. Dazu nutzt man die Möglichkeit des Listengenerators in MuseumPlus, VisualBasic-Befehle auszuführen. Was man allerdings benötigt ist etwas Hintergrundwissen über die Datenbankstruktur von MuseumPlus.
Hintergrundwissen
Werte werden in MuseumPlus in einer separaten Tabelle gespeichert. Als Kennzeichen, welcher Wert zu welchem Objekt gehört, wird in dieser Tabelle zusätzlich die Objekt-ID (also Datensatznummer) des jeweiligen Objektes gespeichert. Dadurch können einem Sammlungsobjekt theoretisch beliebig viele Werte zugewiesen werden.
Verwendung der Funktion DLOOKUP
Die betreffende Tabelle heißt ObjHandel und kann im Listengenerator mit der VisualBasic-Funktion DLOOKUP folgendermaßen ausgelesen werden:
=DLOOKUP("OweWertF","ObjHandel","OweObjId=" & [ObjId])
Weitere Informationen zur Verwendung von DLOOKUP finden sich hier.
Die wichtigsten Feldnamen der Tabelle ObjHandel habe ich in der folgenden Liste zusammengestellt:
- OweEreignisD: Datum von
- OweEreignisBisD: Datum bis
- OweAktionS: Geschäft / Werttyp
- OwePreisF: Wert (Landeswährung)
- OweWaehrungS: Währung (Landeswährung)
- OwePreisFremdF: Wert (Fremdwährung)
- OweWaehrungFremdS: Währung (Fremdwährung)
- OweKommentarM: Kommentar
Kombination mehrerer Felder in der Ausgabe
Mehrere Felder können in der Ausgabe auch kombiniert werden:
=DLOOKUP("OweAktionS & ': ' & OwePreisF & ' ' & OweWaehrungS","ObjHandel","OweObjId=" & [ObjId])
Erzeugte Ausgabe: Versicherungswert: 2300 EUR.
Formatierte Zahlenangaben in der Ausgabe
Interessant besonders bei Zahlenwerten ist die Kombination der Funktionen DLOOKUP und FORMAT:
=DLOOKUP("OweAktionS & ': ' & FORMAT(OwePreisF,'#,##0.00') & ' ' & OweWaehrungS","ObjHandel","OweObjId=" & [ObjId])
Erzeugte Ausgabe: Versicherungswert: 2.300,00 EUR.
Auslesen eines bestimmten Werttyps
Die bisherigen Beispiele haben stets den ersten in der Datenbank gefundenen Wert eines bestimmten Objektes ausgegeben. Sinnvoller ist natürlich, bei der Abfrage festzulegen, welcher Werttyp ausgegeben werden soll. Das erledigt das folgende Beispiel:
=DLOOKUP("FORMAT(OwePreisF,'#,##0.00') & ' ' & OweWaehrungS","ObjHandel","OweObjId=" & [ObjId] & " AND OweAktionS='Versicherungswert'")
Erzeugte Ausgabe: 2.300,00 EUR.