Domino 9 und frühere Versionen > ND6: Entwicklung
EditMode verwehren mit 2 Bedingungen
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