Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: lotus blue am 17.08.06 - 14:48:05
-
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 :-: ;)
-
(Status="OK")
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.
-
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
-
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
-
Nene, Mißverständnis. So sollte das aussehen :
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
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.
-
Danke Euch 2en.
Aber wenn ich nach der Methode gehe, habe ich folgendes Problem:
"Der Zugriff von Benutzern mit mindestens Editorzugriff in der ACL wird nicht durch ein Autorenfeld beschränkt." (dies ist bei mir der Fall)
Gruß
-
Hi.
Ist es denn dringend Notwendig, daß die Benutzer Editorrechte haben müssen?
Im Normalfall kommt man auch mit Autorenrechten aus.
André
-
Hi. Habe es mit Autorenrecht schon probiert.
Aber da hakt mein LS.
"Sie sind zur Durchführung nicht berechtigt."
Vielleicht fällt Euch LS-Profis was auf. :-:
->User mit Editorrecht
->LS im Querysave
Sub Querysave(Source As Notesuidocument, Continue As Variant)
If Messagebox ("Wollen Sie dieses Änderung nun speichern?.", 36, "Hinweis") = 7 Then Continue = False
End If
End Sub
Im Aktionsbutton
Sub Click (source As Button)
Dim ws As New notesuiworkspace
Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim newDoc As NotesDocument
Dim uidoc As notesuidocument
Dim rtitem As NotesRichTextItem
Dim boxType As Long, answer As Integer
Set uidoc = ws.currentdocument
Set db = s.CurrentDatabase
Set doc = uidoc.Document
'******* Hier wird dann das Dokument gespeichert, verlinkt und versendet
Call uidoc.Save
Set newDoc = New NotesDocument( db )
Set rtitem = New NotesRichTextItem( newdoc, "Body" )
Call rtitem.AppendDocLink( doc, "hier gelangen Sie zum Dokument" )
newdoc.SendTo = "................."
newdoc.Subject = _
"Es ist eine neue Änderungsmeldung eingegangen. Bitte überprüfen Sie diese Meldung."
Call newdoc.Send( False )
doc.saveoptions = "0"
Call uidoc.close
Exit Sub
End Sub
-
Die Hilfe hilft ;D
Such mal nach
Zugriffsebenen für Datenbanken
in der Benutzerhilfe.
Ich gehe davon aus, das keine Autorenfelder eingetragen sind, dann darfst Du das auch nicht.
André
-
Hat sich erledigt. Der liebe Cache ;D :love: