Die Chefauskunft der Sage 100 wird auch in der zur Erstveröffentlichung aktuellen Version 9.0.2 noch durch ein in Visual Basic 6 erstelltes Steuerelement abgebildet. Beim Initialisieren wird ihm ein Mandantenobjekt übergeben.

In einer Kundeninstallation ließ sich nach einem LiveUpdate die Chefübersicht für einen einzelnen Benutzer nicht mehr öffnen: Statt des Steuerelements erschien lediglich der Laufzeitfehler 91. Dieser weist in Visual Basic darauf hin, dass ein Objekt vor der Verwendung nicht instanziiert wurde.

Fehlermeldung Laufzeitfehler 91 beim Öffnen der Chefübersicht
Fehlermeldung beim Öffnen der Chefübersicht.

Da andere Benutzer auf demselben Terminalserver die Chefübersicht weiterhin nutzen konnten, ließ sich ein generelles Problem mit der Registrierung der COM-Steuerelemente ausschließen.

Ursache

In der Tabelle KHKChefInfo werden die Selektionen der jeweiligen Benutzer in der Chefübersicht gespeichert. Verweist eine gespeicherte Selektion auf eine Verdichtungsebene, die in der Datenbank nicht mehr existiert (etwa weil sie im Zuge des LiveUpdates verändert wurde), führt dies beim Datenaufbau zu einem nicht behandelten Fehler – Laufzeitfehler 91.

Lösung – schnell und gezielt

Durch Löschen der betroffenen Einstellungen aus KHKChefInfo, gefiltert auf den betroffenen Benutzer und Mandanten, lässt sich das Problem direkt beheben:

DELETE FROM KHKChefInfo
WHERE Benutzer = @Benutzer
  AND Mandant  = @Mandant;

Der Benutzer verliert damit seine persönlichen Selektionen für die Chefübersicht und beginnt sozusagen wieder „bei null" – die Chefübersicht öffnet sich anschließend ohne Fehler.

Lösung – defensiver

Wer die ursprüngliche Konfiguration nicht verwerfen, sondern analysieren möchte, kann die Einträge alternativ auf einen fiktiven Mandanten oder Benutzer umparken und sukzessive zurücksetzen, um die problemauslösende Selektion zu ermitteln:

UPDATE KHKChefInfo
SET    Mandant = @FiktiverMandant
WHERE  Benutzer = @Benutzer
  AND  Mandant  = @Mandant;

Anschließend lassen sich die Einstellungen einzeln zurückführen, bis sich der Fehler reproduziert. Der Mehraufwand lohnt sich nur, wenn der Benutzer aufwendige Selektionen hatte, die er nicht erneut anlegen will.

Lehre

Ein nicht behandelter Fehler bei einem inkonsistenten Datenstand ist eine klassische Quelle solcher „nach dem Update kaputt"-Symptome. Das Problem ist dabei nicht das LiveUpdate – es ist die fehlende Defensive im Code des Steuerelements. Aus Sicht des Anwenders bleibt es ärgerlich; aus Sicht des Administrators ist die Kombination aus VBA-Erbe und fehlerhaftem Datenstand mit einem zweizeiligen SQL aber schnell entschärft.

Kontakt