Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Nick am 10.07.03 - 11:30:00
-
Hallo Zusammen,
help! Folgende Herausforderung:
In einer Dokumentdatenbank existiert ein Dokument, für alle Benutzer lesbar. (Feld-Status: Veröffentlicht)
Über einen Button "Bearbeiten" soll ein Editor eine Kopie von diesem Dokument erstellen. (Feld-Status: In Bearbeitung). Dokumente im Status "In Bearbeitung" sind nur für Editoren sichtbar. Nach Bearbeiten dieses Dokuments soll der Editor dieses Dokument über einen Button "Veröffentlichen" wieder der Allgemeinheit zugänglich machen(Status:Veröffentlicht). Das Original-Dokument soll dann durch diese Kopie ersetzt werden.
Gibt es eine Möglichkeit dieses Problem (Kopieren, Ersetzen) über @Formeln zu lösen, oder kann mir jemand mit Script weiterhelfen?
Vielen Tausend Dank!
Eure Nick
-
Hi Nick,
für sowas nehme ich immer Script. Die Formelsprache ist da nen bisschen holprig.
Formel um neues Dokument zu erstellen
dim session as NotesSession
dim db as NotesDatabase
dim dc as NotesDocumentCollection
dim doc as NotesDocument
dim newdoc as NotesDocument
set session = New NotesSession
set db = session.CurrentDatabase
set dc = db.UnprocessedDocuments 'alle gewählten Dokumente
if dc.Count = 0 then exit sub
set doc = dc.GetFirstDocument
while not( doc is nothing )
'Erstelle neue Kopie
set newdoc = doc.CopyToDatabase(db)
'Setze Bearbeitungsrecht
newdoc.Editors = session.Username 'setze Autorenfeld
newdoc.Readers = session.Username 'setze Lesefeld
'setze Status
newdoc.Status = "In Bearbeitung"
'Setze Feld mit DocID des ursprünglichen Dokuments
newdoc.InheritedDocID = doc.UniversalID
call newdoc.Save( True, True, True )
set doc = dc.GetNextDocument(doc)
wend
-
Hier dann der Code für den Veröffentlichen Button
auch wieder per Agent (für gewählte Dokumente)
dim session as NotesSession
dim db as NotesDatabase
dim dc as NotesDocumentCollection
dim doc as NotesDocument
dim olddoc as NotesDocument
set session = New NotesSession
set db = session.CurrentDatabase
set dc = db.UnprocessedDocuments 'alle gewählten Dokumente
if dc.Count = 0 then exit sub
set doc = dc.GetFirstDocument
while not( doc is nothing )
'Setze Leserecht für alle
doc.Readers = ""
'setze Status
doc.Status = "Veröffentlicht"
'Speichere Dokument
call doc.Save( True, True, True )
'Lösche altes Dokument
set olddoc = db.GetDocumentByUNID( doc.InheritedDocID(0) )
if not olddoc is nothing then
call olddoc.Remove( true )
end if
set doc = dc.GetNextDocument(doc)
wend
-
P.S: Du musst die Feldnamen für Editors bzw. Readers natürlich durch Deine Feldnamen ersetzen.
Andreas