Hallo!
Ich hoffe, alle hatten ein Frohes Weihnachtsfest. Meine Fröhlichkeit hat heute ein jähes Ende gefunden, weil ich an einer Formel sitze, und es nicht funktionieren will. Vielleicht könnt ihr mir helfen.
Ausgangssituation: Eine Datenbank mit dem Namen "TEO" ist als Replik auf zwei Servern vorhanden. Da die Datenbank recht groß ist, die Anwendung aber zeitkritisch ist, ist es erforderlich, dass alle Benutzer die Datenbank vom selben Server aus starten und nutzen. Ansonsten gibt es Konfliktdokumente. Um sicherzustellen, dass die Benutzer auf dem "richtigen" Server arbeiten, ist in der Datenbank ein Datenbank-Dokument (Form = "MCStm") vorhanden, das neben anderen Parametern auch den aktuell zu nutzenden Server im Feld "StmServer" enthält.
Beim Öffnen der DB soll nun überprüft werden, ob das Lesezeichen des Benutzers auch auf den "richtigen" Server verweist. Ist das nicht der Fall, wird ein Hinweis ausgegeben, der zum Umstellen des Servers auffordert. Wird das vom Benutzer nur mit OK bestätigt, so öffnet er die DB auf dem falschen Server, und ich habe den Ärger.
Ich will nun erreichen, dass das Öffenen der DB auf dem falschen Server zwar möglich bleibt, aber nur dann geschieht, wenn der Benutzer die Nutzung des "falschen" Servers durch die Eingabe des Namens bestätig. Und da beginnt mein Problem.
Meine folgende Formel funktioniert soweit. Sie wird im PostOpen einer Begrüßungsseite zur DB aufgerufen. Stimmt der Server nicht, muss etwas eingegeben werden. Wird etwas anderes eingegeben als der Servername auf dem Lesezeichen, wird die Eingabeaufforderung wiederholt. Was allerdings nicht funktioniert, ist die Abbruch-Bedingung. Wird im Prompt auf "Abbrechen" geklickt, wird die Abarbeitung der gesamten Formel gestoppt (so steht es auch in der Hilfe, zumindest verstehe ich das so, was da steht), nachfolgende Befehle werden ignoriert, und anstatt die Anwendung zu schließen, geht's einfach weiter - auf dem falschen Server.
Wie bekomme ich den Abbruch hin, der aber noch was machen soll? Welche Alternative habe ich, außer LS?
In allen @Prompt-Beiträgen im Forum wird nie auf diesen Abbruch-Fall eingegangen. Anscheinend gehen alle davon aus, dass da nie ein Benutzer draufklickt.
TEOServer := @DbLookup("Notes":"NoCache";"";"ViewStm";"MCStm";"StmServer";[FailSilent]);
AktServer := @Name([CN];@ServerName);
tmp := "";
Meldung := "Sie arbeiten nicht auf Server " + @UpperCase(TEOServer) + @Char(13) + "Bitte beenden Sie TEO. Schließen Sie alle Dokumente, schalten auf Server " + @UpperCase(TEOServer) + " um und starten TEO erneut." + @Char(13) + @Char(13) + "(Nur nach Rücksprache mit oder Aufforderung durch die IT auf einem anderen, zu benennenden Server weiterarbeiten!)";
@If(AktServer = TEOServer; "";
@While(tmp != AktServer;
tmp := @LowerCase(@Prompt([OkCancelEdit]; "TEO - Falscher Server"; Meldung; ""));
@If(tmp = ""; @Prompt([OK];"Test";"Test"); ""); {Nur zu Testzwecken, wird leider ignoriert}
@If(tmp = ""; @Return(""); "") {Wird leider ignoriert}
)
);
Vielen Dank für Eure Unterstützung! Und für das Neue Jahr alles Gute!
Frank