Ein Kunde hat mir heute einen Fehler bei der Reservierung eines Raumes direkt in einer Ressourcen-Reservierungsdatenbank gezeigt. Sie hatte ihre Gestaltung aus der StdR11ResourceReservation/de-Schablone geerbt.
Beim Speichern einer neuen Raum-Reservierung direkt in der Datenbank kam ein Fehlerdialog mit der vielsagenden Meldung "Operation failed". Das Problem trat nicht auf, wenn man den Raum zu einer Besprechung mit eingeladen hat.
Ich konnte das Verhalten bei uns nachstellen. Also Debugger angeworfen und nach sehr vielen "Weiter" blieb der Code an folgender Stelle mit der besagten Meldung stehen:
SharedFunctions_de-DE - Sub GetResourceInfo - Zeile 96
IsSpecList_Error = Evaluate(|@IsError(@ExpandNameList( @Subset(@DbName;1) ; "| + tmplist +|";[IGNORE_FWD_ADDRESS])|)
Ich habe diese Zeile in einen Agenten kopiert, beim paar Dims
eingefügt und tmplist
den Wert gegeben, der er beim Auftreten des Fehlers hatte.
Bei der Ausführung der gleiche Fehler.
Dann habe ich mir mal den Code innerhalb des Evaluate
ausgegeben und vernünftig strukturiert mit Zeilenumbrüchen und Einrückungen. Und die Ursache wurde schnell offenbar: Es fehlt eine schließende Klammer!
Die korrigierte Zeile mit der vorher fehlenden Klammer:
IsSpecList_Error = Evaluate(|@IsError(@ExpandNameList( @Subset(@DbName;1) ; "| + tmplist +|";[IGNORE_FWD_ADDRESS]))|)
An diesem Beispiel sieht man wieder, wie nützlich und hilfreich es ist, den Code strukturiert zu schreiben.