In einer Anwendung gibt es immer zentrale Funktionen, die einen generischen Ablauf steuern. Diese Funktionen rufen aus dem zentralen Bereich berichtsspezifische Funktionen auf. Wenn ein Bericht z. B. nur bei Bedarf Daten abfragt, aber bei dem Aufruf eines Favoriten direkt aktualisiert werden soll, muss die Aktualisierung von dem zentralen Dokument getriggert werden.
Dabei ergibt sich die Problemstellung, dass es auch Berichte geben kann, welche immer aktuell sind. Die zentrale Funktion darf dann den Button zur manuellen Aktualisierung nicht aufrufen, da dieser in diesem Bericht nicht vorhanden wäre. Folglich käme es zu einer Fehlermeldung.
Mit einer dynamischen Prüfung Fehlermeldungen vermeiden
Ein Lösungsweg für diese Problematik besteht darin, eine Steuerungstabelle in einer Datenbank zu pflegen, welche die Information enthält, wann eine manuelle Aktualisierung notwendig bzw. sinnvoll ist. Im Rahmen der Berichtsaktualisierung könnte diese Information dann abgefragt werden. Allerdings ist der Aufwand zur Pflege dieser Informationen relativ hoch. Die Funktionalität und auch die Möglichkeit der Berichtsauswertung sind trotz des Aufwandes und der Fehleranfälligkeit gegeben. Eleganter ist allerdings der Weg über eine dynamische Prüfung, ob ein Objekt vorhanden ist. arcplan stellt dafür keine Funktion bereit. Doch kann die Prüfung mit folgender Formel erfolgen:
ISTLEER(OBJEKT([<Bericht_Aktualisieren_Button>];[<Berichtsname>]))
Diese Formel ermittelt aus dem Bericht <Berichtsname> das Objekt mit dem Namen <Bericht_Aktualisieren_Button>. Wenn dieses Objekt nicht existiert, gibt die Prüfung mit ISTLEER eine 1 zurück, ansonsten eine 0.
Wichtig ist hierbei, dass die Funktion ISTLEER() natürlich den Inhalt eines Objektes prüft. Im Beispiel der Aktualisierung ist das zu prüfende Objekt ein Button. Der Inhalt eines Buttons ist der Text, der in der „Ausgabe“-Eigenschaft (der Beschriftung) des Buttons hinterlegt ist. Dieser darf also nicht leer sein. Für alle anderen Objekte gilt daher ebenso: Nur mit vorhandenem Inhalt kann eine Überprüfung funktionieren.
Warum eine alternative Formel nicht dauerhaft funktioniert
Eine Prüfung, ob ein Objekt leer ist oder nicht, wird häufig auch mit folgendem Konstrukt durchgeführt:
OBJEKT([<Bericht_Aktualisieren_Button>];[<Berichtsname>]) = LEER()
Diese Art der Prüfung funktioniert jedoch nicht für den hier beschriebenen Fall, da ein „= LEER()“ nur auf Objekte mit dem „Berechnen-Ereignis“ angewendet werden kann. Daher sollte zur Prüfung nur die eingangs genannte Formel genutzt werden.