Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: pl001 am 10.03.05 - 09:52:44

Titel: Felder vergleichen
Beitrag von: pl001 am 10.03.05 - 09:52:44
Hallo,

ich stehe vor folgender Problemstellung. Ich habe in einer Maske ein Namensfeld mit einem oder mehreren Werten (Personen aus dem Verzeichnis).

Nun möchte ich über LotusScript steuern, dass nur die in dem Feld eingetragenen Personen das Dokument bearbeiten können.

Bisher habe ich folgenden Lösungsansatz. Hier besteht nur ein Problem, wenn das Feld DocVisibly mehrere Einträge enthält und Nutzer nicht an erster Stelle in der Liste steht funktioniert.

Postopen
Code
Sub Postopen (Source As Notesuidocument)
	Dim session As New NotesSession
	Dim doc As NotesDocument
	Set doc = Source.Document
	
	If (Source.EditMode = True And (Instr(Doc.DocVisibly(0), session.Username) = 0)) Then
		Source.EditMode = False 'This triggers the QueryModeChange event !
	End If
	
End Sub

Querymodechange
Code
Sub Querymodechange (Source As Notesuidocument, Continue As Variant)
	Dim session As New NotesSession
	Dim doc As NotesDocument
	Set doc = Source.Document
	
	If (Instr(Doc.DocVisibly(0), session.Username) = 0) Then
		Messagebox "Sie können dieses Dokument nicht bearbeiten", MB_ICONEXCLAMATION, "Achtung!"
		If Source.EditMode = False Then
			Continue = False
		End If     
	End If     
	
End Sub

Wie müsste der Vergleich des Aussehen, so dass es keine Rolle spielt, an welcher Stelle der Liste sich der Nutzer befindet.

Viele Dank
und viele Grüsse

Peter
Titel: Re: Felder vergleichen
Beitrag von: Driri am 10.03.05 - 10:00:35
Verstehe ich nicht. Was spricht gegen die Verwendung von Autorenfeldern ? Oder sind in der Applikation höhere Rechte als Autorenrechte erforderlich ?
Titel: Re: Felder vergleichen
Beitrag von: pl001 am 10.03.05 - 10:18:00
Es geht darum, nur einzelne Dokumente zur Bearbeitung zu sperren. Der Autor soll natürlich auch ausgeschlossen werden können.

Wie kann man also prüfen, ob der Username im Feld 'DocVisibly' vorhanden ist?

Gruß
Peter
Titel: Re: Felder vergleichen
Beitrag von: dirk_2909 am 10.03.05 - 10:23:57
Forall strU in doc.DocVisibily
   if LCase( cstr( strU ) ) = LCase( session.UserName ) Then
        intOK = True
        Exit Forall
   end if

end Forall

if intOK Then
   ......
End if


... Aber warum Arbeitest Du nicht mit Rollen und Autorenfeldern.
Das macht die Sache doch leichter pflegbar etc.  ???

Dirk
Titel: Re: Felder vergleichen
Beitrag von: Driri am 10.03.05 - 10:29:37
Zitat
Es geht darum, nur einzelne Dokumente zur Bearbeitung zu sperren. Der Autor soll natürlich auch ausgeschlossen werden können.

Das beantwortet nicht meine Frage. Genau das wäre doch mit Autorenfeldern möglich. Den Ursprnugsautor eines Dokumentes kann ich doch genauso aus einem Autorenfeld entfernen, wie ich zusätzliche oder neue Bearbeiter hinzufügen kann.
Titel: Re: Felder vergleichen
Beitrag von: pl001 am 10.03.05 - 12:50:01
@dirk_2909

Habe es getestet, funktioniert aber leider nicht.


Gruß
Peter
Titel: Re: Felder vergleichen
Beitrag von: Axel am 10.03.05 - 13:01:42
Hi,

jetzt muss ich doch aber auch mal fragen:

Warum verbiegst du dir die Finger, wenn es mit Autorenfeldern wesentlich einfacher und sicherer geht.

Was spricht denn dagegen?


Axel
Titel: Re: Felder vergleichen
Beitrag von: dirk_2909 am 10.03.05 - 13:08:23
Ich bin auch für Autorenfelder  :)

Arbeite doch mit Rollen UND Namen!

ZU dem Script: Was für Werte sind denn in docVisibility gespeichert?
Ist dort der Username in Abbreviate oder Cannonicial gespeicher ?

Du musst mit den entsprechenden Werten ( session.???? ) vergleichen.

Dirk