Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: botschi am 19.09.06 - 14:35:16

Titel: Querymodechange
Beitrag von: botschi am 19.09.06 - 14:35:16
Hallo,

ich möchte verhindern, dass nur einige Leute ein Dokument ins Bearbeiten setzen dürfen.
Im Querymodechange habe ich folgende Formel eingetragen:
@IsNotMember(@UserNamesList; "Admingruppe")
Ich bin nicht in dieser Gruppe und kann das Dokument trotzdem ins Bearbeiten setzen.
Dann habe ich das Script eingebaut
Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
   
   Dim s As New NotesSession
   Dim formel As String
   Dim eval_formel As Variant
   
   
   formel = | @IsNotMember(@UserNamesList; "Admingruppe") |
   eval_formel = Evaluate(formel)
   
End Sub
Ergebnis ist, dass die Formel immer 0 zurückgibt, auch wenn ich dort eine Gruppe eintrage, in der ich Mitglied bin.

Kann mir jemand helfen? Wie kann ich das realisieren? Kann man dort keine Formel verwenden? Selbst wenn ich @False in das Ereignis eintrage kann ich ins Bearbeiten wechseln.
Leser- und Autorenfelder sind jetzt nicht mehr möglich, da es sehr viele dieser Dokumente gibt und ich diese denn ja erstmal updaten müsste. Es gibt auch viele Editoren in der DB usw. Die DB ist schon sehr alt und voll, aus den Anfängen von R4...
Titel: Re: Querymodechange
Beitrag von: Lossa am 19.09.06 - 14:40:24
Hi,

   formel = | @IsNotMember(@UserNamesList; "Admingruppe") |

ich würde es an deiner Stelle einmal andersherum probieren:

   formel = | @IsNotMember("Admingruppe";@UserNamesList) |

Dann klappts auch mit dem Member.

Titel: Re: Querymodechange
Beitrag von: ZaLudtske am 19.09.06 - 14:42:07
Hallo,

der Paramater Continue muß um das Ereigniss abzubrechen auf den Wert 'False' gesetzt werden.

Rainer
Titel: Re: Querymodechange
Beitrag von: botschi am 19.09.06 - 15:42:56
Aaaaah  ;D
Formel umstellen ist ein guter Hinweis gewesen! So gehts auch.

Danke dafür!

Und Continue will ich ja auch auf false setzen, deswegen mach ich ja die Prüfung....
Titel: Re: Querymodechange
Beitrag von: Tode am 20.09.06 - 10:59:19
Nur nebenbei: ich hoffe, Du erhoffst Dir von dieser Änderung keine Sicherheit...

Jeder, der in seinem Client das Smarticon "Debug Lotus Script" schon mal gedrückt hat, kann damit Dein QueryModeChange locker ausheben, indem er einfach das Script vor der Zeile Continue = False abbricht..

mal ganz abgesehen davon (aber dieser Hinweis kommt JEDESMAL, wenn jemand so versucht, das bearbeiten zu verhindern: Warum verwendet niemand die Suche....), dass man über Strg + B oder über eine Aktion "Dokument bearbeiten" mit dem Code "@Command([EditDocument])" aus der Ansicht DIREKT im Edit- Mode landet, ohne dass das QueryModeChange gefeuert wird...

Um wenigstens das zu verhindern, muss der Code auch noch ins QueryOpen mit Abfrage auf "uidoc.EditMode = True" und isNewDoc....

BITTE: Gib Deinen Benutzern "Author"- Rechte und verwende die entsprechenden Felder für ECHTE Sicherheit... Dann kannst Du im Autor- Feld einfach die Admingruppe eintragen und gut ist...

Tode

Titel: Re: Querymodechange
Beitrag von: botschi am 20.09.06 - 13:16:30
Danke für den Hinweis.

Ich habe die Suche benutzt und den Beitrag (ich glaube von Lossa) gefunden, der Strg + B beschreibt. Dem Verantwortlichen der DB habe ich dies auch so gesagt.
Es handelt sich bei den Dokumenten um Vermerke, die auch an einen Kunden gehen. Damit nicht jeder User dort seinen Senf eintragen kann (Ausdruck, Formulierung, Rechtschreibfehler), soll nur eine bestimmte Gruppe das Dokument bearbeiten dürfen.

Ne RICHTIGE Sicherheit habe ich mir davon nicht erhofft.

Für die Zukunft merke ich mir das aber  ;)

The problem with quick and dirty is that dirty remains long after quick has been forgotten.  ;D