Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Raimund am 03.07.03 - 10:30:41

Titel: Vor dem Speichern Ansicht nach gleichen Daten durchsuchen
Beitrag 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
Titel: Re:Nach dem speichern nicht mehr bearbeiten dürfen
Beitrag von: cpo am 03.07.03 - 10:44:44
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
Titel: Re:Nach dem speichern nicht mehr bearbeiten dürfen
Beitrag von: Raimund am 03.07.03 - 11:22:12
Hi CPO,

danke für die Antwort.

Gibt es dafür irgend welche Beispile, wie man das angehen soll?

Gruß
Raimund
Titel: Re:Nach dem speichern nicht mehr bearbeiten dürfen
Beitrag von: Till_21 am 03.07.03 - 12:32:48
warum so umstaendlich ?
reicht es nicht die acl 'richtig' zu konfigurieren ?

gruss
 
Titel: Re:Nach dem speichern nicht mehr bearbeiten dürfen
Beitrag von: cpo am 03.07.03 - 17:42:27
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



Titel: Re:Nach dem speichern nicht mehr bearbeiten dürfen
Beitrag von: cpo am 04.07.03 - 11:41:09
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

Titel: Vor dem Spechern DB nach gleichen Daten durchsuchen
Beitrag von: Raimund am 04.07.03 - 11:44:23
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