AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
25.01.22 - 18:37:57
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Best Practices
| |-+  Diskussionen zu Best Practices (Moderatoren: Axel, MartinG, animate, koehlerbv)
| | |-+  Kleiner Fehler in "EditMode für bestimmte Dokumente verwehren" ?
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Kleiner Fehler in "EditMode für bestimmte Dokumente verwehren" ?  (Gelesen 5056 mal)
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« am: 27.03.05 - 20:25:59 »

Ich hatte gerade was in einer DB eingebaut, und dachte "ach ja, das hatten wir ja schon in Best Practices".

Es geht um diesen Artikel:
[LotusScript]: EditMode für bestimmte Dokumente verwehren

Es heißt dort:
Zitat
Für den Platzhalter THE_CONDITION ist jeweils die konkrete Bedingung zu formulieren. Soll das Editieren generell verhindert werden, kann dieser Zweig auch entfallen.
Zwei Beispiele:
If (Source.EditMode = True) And (Source.Document.Status (0) = "Accepted") Then
oder - ohne Bedingung -
If (Source.EditMode = True) Then
Und:
Code:
Sub Querymodechange (Source As Notesuidocument, Continue As Variant)

'Prevent editing a document under a certain condition:
If (THE_CONDITION) Then
Messagebox "You are not allowed to edit this document !"

Meines Erachtens muss es allerdings heißen:
If (Source.EditMode = FalseTrue)

Warum?
Erstmal ist ein Dokument im Lesemodus. Source.EditMode gibt also False zurück. Wechselt nun ein User im geöffneten Doc vom Lesemodus in den EditModus (z.B. via Doppelklick oder Strg+E), so ist für Querymodechange Die Bedingung Source.EditMode=False nach wie vor zutreffend. Erst nach dem Querymodechange ist dann Source.EditMode=True.

D.h. will man einwirken, wenn vom Lesemodus auf den Edit-Modus gewechselt wird, so muss man IMHO auf Source.EditMode = False abfragen.

Oder sehe ich das jetzt falsch?
Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

Semeaphoros
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8152


ho semeaphoros - agr.: der Notesträger


WWW
« Antworten #1 am: 27.03.05 - 23:28:55 »

Das ist so richtig, wie Du das siehst, die Query-Events passieren, bevor die Veränderung/Aktion stattfindet, damit ist beim Eintreten des Events noch die alte Umgebung zutreffend. Alles andere wäre ein Bug.
Gespeichert

Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6
koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #2 am: 28.03.05 - 13:23:29 »

Nein, das seht Ihr falsch: Der erwähnte Code steht ja im PostOpen (und nicht im QueryModeChange). Wenn man im PostOpen schon EditMode = True hat, dann wurde das Doc bereits im Bearbeiten-Modus geöffnet, was ja verhindert werden soll.
Im QueryModeChange muss dann allerdings aus EditMode = False geprüft werden, wie es auch im BP-Artikel beschrieben wurde.

Bernhard
Gespeichert
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #3 am: 28.03.05 - 13:46:55 »

Der erwähnte Code steht ja im PostOpen (und nicht im QueryModeChange).

Sicher?

Dort steht erst: "Praktische Umsetzung: Für den Platzhalter THE_CONDITION ist ....If (Source.EditMode = True) Then....". Dort ist keine Einschränkung auf PostOpen erwähnt.

Dann kommen Code-Beispiele. 1 für Postopen, und das 2. Codebeispiel für Querymodechange. Im Querym.-change Bsp. steht dann "If (THE_CONDITION) Then".

So wie sich das darstellt, kann man im Querym.-Change statt THE_CONDITION eben "Source.EditMode = True" einsetzen, was aber falsch ist in dem Kontext.

Es ist zwar im Artikel allgemein erwähnt, aber IMHO ist das Beispiel so falsch - zumindest irreführend bezügl. "THE_CONDITION".

Vielleicht sollte man das auch erweitern mit "THE_CONDITION_POSTOPEN" und "THE_CONDITION_QUERYMODECHANGE" ?
« Letzte Änderung: 28.03.05 - 13:48:43 von TMC » Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

Semeaphoros
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8152


ho semeaphoros - agr.: der Notesträger


WWW
« Antworten #4 am: 28.03.05 - 14:52:51 »

Rein aus didaktischen Ueberlegungen sollte man an dieser Stelle (oder eigentlich fast überall, wo es um logische Ausdrücke geht) keinen Platzhalter verwenden, sondern die Bedingung ausschreiben, um genau solche Missverständnisse auszuschalten.
Gespeichert

Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6
koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #5 am: 28.03.05 - 23:47:23 »

Matthias, Jens:
Ich verstehe wirklich nicht, was Ihr wollt. Jedes Event ist mit korrekten Beispielen versehen. Wenn man die Erläuterungen missverstehen will, kann man sie natürlich missverstehen, aber dann hat man wohl den gesamten Kontext nicht gelesen.
Sowie ich wieder Zeit habe, werde ich aber die Einleitung überarbeiten, damit diese auch für ein Überfliegen des Textes auch zu den Beispielen passt.

Interessanterweise sind wirkliche Anfänger mit dem BP-Artikel bisher klar gekommen ...

Bernhard

PS @Jens: Didaktik und Methodik haben logischerweise auch in meinem Studium ebenso wie bei Dir einen weiten Raum eingenommen. Und gerade deshalb habe ich dort einen Platzhalter für THE_CONDITION eingesetzt, um eben nicht zu konkretisieren.

PS @Matthias: THE_CONDITION hat absolut nichts mit dem jeweiligen Event zu tun - THE_CONDITION ist THE_CONDITION und vollkommen unabhängig von einem Event.
Gespeichert
animate
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 1540


Uh, I'm just gonna go find a cash machine.


WWW
« Antworten #6 am: 29.03.05 - 01:45:09 »

Ich kann auch nichts Falsches oder Irreführendes erkennen. Und ich wüsste auch nicht, wie ich die "Bedingung ausschreiben" sollte. Die ist ja ziemlich variabel für jeden

Das Missverständnis liegt in meinen Augen bei TMC. Vielleicht ist der Punkt, wo du das missverstehst dieser hier:
Zitat
Erstmal ist ein Dokument im Lesemodus.

Laut koehlerbv ist ein Dokument aber eben gerade nicht erstmal im Lesemodus sondern
Zitat
kann ein Dokument auch aus einer Ansicht heraus bereits im EditMode geöffnet werden: Via Menü, via Button, per Tastatur. In diesem Fall wird natürlich das Maskenevent "QueryModeChange" nicht mehr ausgeführt - nach "QueryOpen" und "PostOpen" ist das Dokument geöffnet - im EditMode.
Gespeichert

Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #7 am: 29.03.05 - 20:10:18 »

Ich hab mal visualisiert, was mir da ins Auge gestochen war:
Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: