Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Raimund am 03.07.03 - 10:30:41
-
Hi Entwickler,
mal wieder eine Frage an Euch.
Folgendes Problem:
Ein Feld mit Soll Umsatz:
Nach dem speichern des Dokuments darf der Autor sein Dokument nicht mehr bearbeiten.
Nur der Editor hat nun noch die Möglichkeit einer Bearbeitung.
Ferner:
Validierung. Meldung wenn schon ein Dokument selben Typs, Land, Monats und Jahres
vorhanden ist.
Vielen Dank im Voraus
Gruß
Raimund
-
Hi Raimund,
da würde ich im Querysave einen Lookup auf eine versteckte Ansicht machen. Schlüssel ist zusammengesetzt aus Typ, Tag, Monat und Jahr. Wenn Du ein doc zurückbekommst brichst Du das Speichern-Ereignis ab.
Das kann man entweder mit @@ oder mit script machen (statt Lookup den GetDocumentbykey).
Wenn gespeichert werden darf, setzt Du einfach die Inhalte eines Feldes vom Typ Autoren auf z.B. eine Role, halt so, dass der eigentliche Autor nicht mehr drinsteht.
CPO
-
Hi CPO,
danke für die Antwort.
Gibt es dafür irgend welche Beispile, wie man das angehen soll?
Gruß
Raimund
-
warum so umstaendlich ?
reicht es nicht die acl 'richtig' zu konfigurieren ?
gruss
-
Till,
wie würdest Du die ACL denn setzen? Herr Wichtig soll ein doc ändern können. (Also isser mindestens Autor) Und er soll es nicht mehr ändern können, wenn ein best. Feld gefüllt ist.
Imho geht das nur mit Autorenfeldern...
Raimund, Beispiel gibt's in Massen... Mach ein Feld z.B. "AuthorList" vom Feldtyp Autorennamen.
Als Vorgabewert schreibst Du @UserName
Damit ist der Ersteller des Docs änderungsberechtigt. (Achtung: gilt nur für Leute mit ACL=Autor - und du solltest dafür sorgen, dass du selbst etwas höhere Rechte hast ;D)
Im Save des doc baust Du dann ein
@If(Fieldname <> "";@SetField("AuthorList";"");"")
Könnte so funktionieren. Ist nicht getestet nur getippt - bin nicht so die Heldin der Klammeraffen :P
CPO
-
hi Raimund,
hmmm, würde ich sowieso ganz anders machen...
Ich würde mir auf dem document ein berechnetes Feld mit den entscheidenden Infos machen.
Dann eine Ansicht, in der die dokumente nach diesem Feld kategorisiert sind.
Im QuerySave muss dann geprüft werden, ob es ein dokument mit den Schlüsselinfos schon gibt.
Ungefähr so:
Dim session As New notessession, worspace as New notesuiworkspace
Dim db as notesdatabase, view as notesview, doc as notesdocument, uidoc as notesuidocument
Dim Strkey as String
.... zuweisen
Strkey = workspace.currentdocument.document.TheKey(0)
doc = view.Getdocumentbykey(strkey)
If doc is nothing then
'man darf's speichern
Else
'man darf nicht - also Msgbox, continue=False und raus
End If
Öh, das Script solltest du nur laufen lassen, wenn das doc neu ist, also bisher noch nicht gespeichert wurde ;)
CPO
-
Hi Entwickler,
habe ein Script zusammen gebastelt, welcher die DB nach vorhandenen Feldern durchsucht. Leider nur nach einem. Brauche aber 4.
Wenn diese schon mit den Werten vorhanden sind sollte ein speichern nicht möglich sein.
Wo liegt hier der Fehler?
Jemand eine Idee?
Sub Click(Source As Button)
Dim session As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim db As NotesDatabase
Dim view As NotesView
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim tmpdoc As NotesDocument
Dim dcCollection As NotesDocumentCollection
Dim cKey As String
Dim cText As String
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
Set db = session.CurrentDatabase
cKey = uidoc.FieldGetText("tmpBereich")
Set view = db.GetView( "Alle Dokumente" )
If doc.IsNewNote Then 'Prüfung auf doppelte Dokumente nur wenn Dokument neu
Set dcCollection = view.GetAllDocumentsByKey(ckey, False)
If doc Is Nothing Then
Messagebox"Eintrag noch nicht vorhanden"
Else
Messagebox"Eintrag bereits in der Datenbank vorhanden"
continue=False
Msgbox "Bitte abbrechen!!!"
Exit Sub
End If
End If
End Sub
Danke im Voraus
Gruß
Raimund