Domino 9 und frühere Versionen > ND6: Entwicklung

EditMode verwehren mit 2 Bedingungen

(1/2) > >>

lotus blue:
Hallo,

habe mir mal das Thema "EditMode für bestimmte Dokumente verwehren" durchgelesen und finde die Hilfe und Erläuterung einfach Weltklasse.

Dennoch habe ich bei der Umsetzung ein Problem.

In meiner DB sollen "Alle" das Dok sehen und bearbeiten können, wenn das Feld "Status" auf "ok" ist.
Ist das Feld auf "meldung" soll es zwar noch jeder sehen, aber nur noch ein bestimmter Personenkreis bearbeiten können.
Eigentlich ganz einfach dachte ich mir, aber anscheinend doch nicht.

Hier mal meine Überlegungen:


Sub Postopen (Source As Notesuidocument)
   If (Source.EditMode = True) And (Status="OK") Then
   Source.EditMode = False
   End If
End Sub


Sub Querymodechange (Source As Notesuidocument, Continue As Variant)
   
   If (Bedingung v. Autorenfeld")
Then Messagebox "Sie sind berechtig, Änderungen durchzuführen!", MB_ICONEXCLAMATION, "Achtung"
      If Source.EditMode = False Then
         Continue = False
      End If     
   End If     
   
End Sub

Oder liege ich da komplett falsch?
Sorry aber LS  :-:    ;)

Driri:

--- Zitat ---(Status="OK")
--- Ende Zitat ---

Damit würde der Inhalt der Variablen Status mit dem String "OK" verglichen. Du müßtest also zuerst einmal aus dem aktuellen UIDoc das Feld Status auslesen, so etwa

(Source.FieldGetText("Status") = "OK")


Und wie genau ist der Zugriff für Fall 2 geregelt ? Das müßtest Du schon etwas genauer beschreiben.

VB3Bernd:
Hi,

irgendwann wechselt ja der Wert des Feldes "Status" und das Dokument muss gespeichert werden. Ich würde versuchen im QuerySave das Feld "Status" abzufragen und dann die Leser- bzw. Autorenfelder setzen.

Das kannst Du sogar mit @Formula machen. Ungefähr so:

@if(
Status = "meldung";
@setfield("Leserfeld" ; "<Alle-User>") & @setfield("Autorfeld" ; "<Autor-User>") ;
@setfield ("Leserfeld" ; "<Alle-User>") & "@setfield("Autorfeld" ; "<Alle-User>")
)

Viele Grüße
Bernd

lotus blue:
Hallo Danke VB3Bernd und Driri für die schnelle Hilfe.
@Bernd
Werde ich gleich mal testen ob es funzt

@Driri
Tja da (LS) liegt der Hund begraben .
Feld Status auslesen ist mir noch klar, bei der 2.Bedingung hakt es, darum konnte ich es noch nicht genauer formulieren. Bastle noch rum.
Aber es müsste dann auch so sein, dass ich zunächst mal das Feld "Berechtigter" auslese und dann in etwa gleicher Form vergleiche.
D.h. dann für mich (ACHTUNG !  Null Ahnung mit LS :-[)
LS-Profis bzw. Checker bitte wegschauen   ;)

Sub Postopen (Source As Notesuidocument)
Source.FieldGetText("Status")
   If (Source.EditMode = True) And (Status="OK") Then
   Source.EditMode = False
   End If
End Sub

Sub Querymodechange (Source As Notesuidocument, Continue As Variant)
   Source.FieldGetText("Berechtigter")
   If (Berechtigter="Test")
Then Messagebox "Sie sind nicht berechtig, Änderungen durchzuführen!", MB_ICONEXCLAMATION, "Achtung"
      If Source.EditMode = False Then
         Continue = False
      End If     
   End If     
   
End Sub



Driri:
Nene, Mißverständnis. So sollte das aussehen :


--- Zitat ---Sub Postopen (Source As Notesuidocument)
   If (Source.EditMode = True) And (Source.FieldGetText("Status")="OK") Then
   Source.EditMode = False
   End If
End Sub

Sub Querymodechange (Source As Notesuidocument, Continue As Variant)
   If (Source.FieldGetText("Berechtigter")="Test")
Then Messagebox "Sie sind nicht berechtig, Änderungen durchzuführen!", MB_ICONEXCLAMATION, "Achtung"
      If Source.EditMode = False Then
         Continue = False
      End If     
   End If     
   
End Sub

--- Ende Zitat ---

Wobei Bernds Vorschlag IMO besser ist. Wobei Du keine Leserfelder brauchst, denn Lesen sollen ja alle können. Also müßtest Du dafür sorgen, daß im Autorenfeld dann entweder Alle stehen (z.B. über eine Rolle) oder eben nur die bestimmten Personen eingetragen werden.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln