Mit der neuen Funktion ZEILENBEZUG hat Longview eine Möglichkeit geschaffen, auf einfache Art und Weise das aktuelle Dimensionselement einer Hierarchie auszulesen. Mit der Einführung dieser Funktion wird das Coding für diese Problemstellung übersichtlicher und verständlicher. In dem Blog wird der neue Lösungsweg (mit der neuen Funktion ZEILENBEZUG) dem bisherigen Lösungsweg gegenübergestellt und erläutert.
Ausgangssituation
Folgende Hierarchie sei gegeben:
Ziel ist, das aktuelle Dimensionselement der Hierarchie auszulesen und diese in einer flachen Liste darzustellen. Das in der Abbildung dargestellte Hierarchieobjekt bekommt die Objektbezeichnung Hierarchie. Im folgenden Blog beziehen sich alle Objektreferenzen Hierarchie auf dieses Hierarchieobjekt.
Bisherige Variante mit zwei Hilfsobjekten
Die bisherige Variante besteht aus drei Schritten. Es werden zwei Hilfsobjekte, eins für die Zeilen und eins für die Spalten angelegt und anschließend wird die Bezugsformel darauf angewandt.
Schritt 1
Hier wird der Index für die Spalten ermittelt. Der Index der Spalten entspricht der Hierarchietiefe der Hierarchie.
Zur Ermittlung dieses Indexes wird in arcplan ein Spaltenobjekt angelegt. Dieses Spaltenobjekt wird zum Spaltenindex umbenannt. Unter dem Menüpunkt Berechnung wird zur Ermittlung der Hierarchietiefe die Funktion EBENE, referenziert auf der Hierarchie, verwendet (siehe nachfolgende Abbildung).
Schritt 2
Hier wird der Index für die Zeilen ermittelt. Der Zeilenindex entspricht nur einer Aufzählung von 1 bis zur Anzahl der vorhandenen unterschiedlichen Elemente. Dafür wird ebenfalls ein Spaltenobjekt angelegt und dieses wird als Zeilenindex benannt. Die Berechnung dieses Objektes wird mit den Formeln AUFZÄHLEN und ANZAHL, referenziert auf den Spaltenindex, umgesetzt (siehe nachfolgende Abbildung).
Schritt 3
Im letzten Schritt wird mit Hilfe der beiden Hilfsobjekte das jeweils letzte Element der Hierarchie ausgelesen. Dafür wird ein weiteres Spaltenobjekt erzeugt, das sich mit Hilfe der Bezugsformel errechnet. Mit dem BEZUG wird auf einen Teilbereich der Hierarchie referenziert. Durch die ermittelten Zeilen- und Spaltenindexe entspricht dieser referenzierte Teilbereich der gewünschten Darstellung (siehe nachfolgende Abbildung).
Elegantere Variante mit der neuen Funktion ZEILENBEZUG
Mit der neuen Formel ZEILENBEZUG wird das gewünschte Ergebnis mit nur einer Berechnung ermöglicht. Dafür legen wir ein Objekt an und führen unter Berechnung den ZEILENBEZUG aus. Der ZEILENBEZUG erwartet vier Parameter. Zum einen das Objekt, auf welches referenziert wird. In diesem Beispiel ist dies die Hierarchie. Ein weiterer Parameter, der erwartet wird, ist VONLINKS bzw. VONRECHTS. Für dieses Beispiel ist VONLINKS der richtige Parameter, da die Indexberechnung von der Landesebene aus startet. Anschließend wird noch der Startspalten- und Endspaltenindex übergeben. Start- und Endspaltenindex stimmen für dieses Beispiel überein und entsprechen der Hierarchietiefe, die wiederum mit der Funktion EBENE ausgelesen wird.
Fazit
Beide Programmierwege führen zur gewünschten Darstellung. Jedoch sparen wir mit der neuen Funktion ZEILENBEZUG Objekte und erhalten eine übersichtlichere Lösung.