Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: MrMagoo am 15.10.03 - 11:31:28
-
Hallo zusammen,
folgendes Problem: Ich lese mit folgendem Agenten den ersteller des Dokumentes aus
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim subj As Variant
Set db = session.CurrentDatabase
Set collection = db.unprocessedDocuments
Set doc = collection.GetFirstDocument
While Not (doc Is Nothing)
subj = doc.GetItemValue("$UpdatedBy")
Messagebox( subj( 0 ) )
Set doc = collection.GetNextDocument(doc)
Wend
End Sub
Jetzt möchte ich aber den letzten Bearbeiter haben, außer es war ein bestimmter z.B. der Server. ???
Kann mir jemand helfen, danke
-
Hallo zusammen,
folgendes Problem: Ich lese mit folgendem Agenten den ersteller des Dokumentes aus
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim subj As Variant
Set db = session.CurrentDatabase
Set collection = db.unprocessedDocuments
Set doc = collection.GetFirstDocument
While Not (doc Is Nothing)
subj = doc.GetItemValue("$UpdatedBy")
Messagebox( subj( 0 ) )
Set doc = collection.GetNextDocument(doc)
Wend
End Sub
Versuch mal folgendes:
.....
subj = doc.GetItemValue("$UpdatedBy")
Forall s In subj
If s <> server Then
msgBox(s)
End If
End Forall
Set doc = collection.GetNextDocument(doc)
.....
-
Das kommt aber wieder auf's selbe 'raus wie der erste Code.
Die Schleife muß rückwärts durchlaufen werden und beim ersten Auftreten eines Nicht-Servers verlassen werden, also ein
For iLoop = ubound (<UpdatedBy-Array>) to 0 step - 1
Und der / die Servernamen müssen bekannt sein oder einem eindeutigen Schema entsprechen.
HTH,
Bernhard
-
Da hast Du allerdings recht. ;)
-
Also ich weiss nun zwar nicht warum, aber so macht er es richtig
While Not (doc Is Nothing)
subj = doc.GetItemValue("$UpdatedBy")
Forall s In subj
If s <> "server1" Then
Set item = doc.ReplaceItemValue( "anzeige", s)
Call doc.Save( True, True )
End If
End Forall
-
Das ist nicht gut, wenn man nicht weiß, warum ...
Dein Code ist die primitive Vorschlaghammermethode - Du liest einfach alle Bearbeiternamen und speicherst jedesmal das ganze Dokument.
Und bei jedem Speichern wird $UpdatedBy und $Revisions wieder verändert ...
Eine alternative wäre auch das Speichern des letzten menschlichen Bearbeiters in QuerySave - das führen Server bekanntlich niemals aus.
Bernhard
-
ja genau, hast Du mir schon einmal vorgeschlagen und habe ich jetzt auch für die Zukunft so eingestellt. Wollte halt alle Dokumente wieder ohne server anzeigen.