User sollen nur mit Button Speichern

  • Hallo,
    ich möchte die User dazu bewegen, ein Dokument nur mittels einer Action Schaltfläche zu speichern, weil nur dann zusätzlicher Code ausgeführt wird.


    Wie kann ich verhindern, dass mit dem Symbol in der Menueleiste oder im Menue selber oder mittels der Escape-Taste gespeichert wird?


    Alternativ wäre es auch OK, wenn das Dokument so lange als "@IsNewDoc = 1" angesehen wird, bis besagter Button geklickt wurde, egal wie oft vorher gespeichert.


    Marco

  • status abfragen und dann
    Messagebox "Verwenden Sie bitte die Buttons zum Speichern!",, ":: Fehler - direktes Speichern nicht erlaubt ::"
    und
    continue = false


    des wars

  • Also die "gute" Schaltfläche schreibt eine 1 in das Feld DocIstNeu


    und dann:


    Sub Querysave(Source As Notesuidocument, _
    Continue As Variant)
    If ( DocIstNeu <> "1" ) Then
    Messagebox( "Verwenden Sie bitte die Schaltfläche zum Speichern!" )
    continue = False
    End If
    End Sub



    Ja, ich habe die Passage über QuerySave jetzt gelesen. Wo muss ich das script hinschreiben, um es beim Speichern ausführen zu lassen?

  • Ich glaube du bringst da gerade zwei Punkte durcheinander:


    Entweder verhinderst du das Speichern über den QuerySave Event wenn ein bestimmter Feldwert nicht gesetzt ist und setzt den Feldwert in deinen Aktionen (sinnvoll vor allem dann wenn du unterschiedliche Aktionen hast die unterschiedliches ausführen)


    Oder aber du schreibst deinen Code direkt ins QuerySave, dann wird es bei jedem Speichern ausgeführt. Allerdings hast du dann keine direkte Möglichkeit mehr zu unterscheiden welche Aktion der Benutzer ausgeführt hat

  • Nicht vergessen beim Postopen oder querymodechange den wert wieder zu leeren, damit einen erneute bearbeitung auch nur mit den knopf gespeichert und verlassen werden kann. Sonnst ist es nur bei neue dokumente funktionsfähig.

  • Puh, jetzt bin ich verwirrter als vorher.


    Ich würde gerne beim ersten Speichern erzwingen, den Knopf zu benutzen. Danach kann von mir aus gespeichert werden wie man will.
    Also muss ich Code ins QuerySafe schreiben.


    Wo ist das QuerySafe? Ich habe zwar einige Beispiel dafür gefunden, was man dort machen kann, aber nichts darüber, was und wo dieses QuerySafe eigentlich ist.

    • Offizieller Beitrag

    öffne die Maske im Designer und dann siehe Anhang.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Das war aber schnell. Ich hab's gefunden.


    Ich habe die Datenbank von einer anderen Stelle übernommen und bin leider noch totaler Anfänger.
    Im QuerySave steht schon so einiges drin. Ich würde versuchen, meine Abfrage dort unterzubringen und dann ggf. das Speichen vor Ausführen des restlichen Codes zu unterbinden. (Danach kann ich ja Selbststudien beginnen um das Genze besser zu verstehen).


    Ich habe noch nicht verstanden, welche Abfrage ich dort genau machen muss.


    Taurec sagte ja, meine Idee wäre nicht so gut.

    • Offizieller Beitrag

    mh warum aust Du die Dinge, die noch erledigt werden müssen nicht direkt ins QuerySave ein?


    Für den User ist es nicht begreiflich oder zumindest schwer vermittelbar, wenn er einmal eine Schaltfläche verwenden muss und dann speichern kann wie er will.


    Solche Kopfstände habe ich nur mit Version 3.x gemacht, weil es dort noch kein Script gab.


    Gruß
    Dirk

  • @ taurec
    Ja, Du hast recht. Habe ich nicht so gemeint. Ich verstand nicht was Du meintest, als Du sagtest ich solle den code direkt in das QuerySave schreiben.


    @ Diali
    Ja, auch Du hast recht. Jetzt würde ich das so machen, leider ist die Datenbank, um die es geht, nicht von mir und so komplex, dass ich noch nicht gänzlich hinter die Programmierung gestiegen bin.
    Ich möchte im Moment nur eine Sicherheitsabfrage einbauen, die das Speichern abbricht, wenn das Dokument neu ist und der User nicht die Schaltfläche benutzt.

    • Offizieller Beitrag

    OK.


    Im QuerySave schauen, ob Objekte, die Du brauchst (NotesDocument, eventuell NotesDatabase, eventuell NotesView), schon gesetzt sind und zwar bevor andere Aktionen ausgeführt werden. Dann an diese Stelle Dein Script reinpacken.
    Treten Fehler auf bzw. soll die Verarbeitung abgebrochen werden kannst Du dies mit:
    - Continue = False ... verhindert das Speichern
    - Exit Sub ... arbeitet das Script im QuerySave nicht weiter ab, aber speichert trotzdem.


    Mit
    Continue = False
    Exit Sub
    (Reihenfolge beachten) bekommst Du einen Abbruch ohne zu speichern hin.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein