Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: MrMagoo am 15.10.03 - 11:31:28

Titel: $UpdatedBy letzter Bearbeiter außer bestimmter
Beitrag 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
Titel: Re:$UpdatedBy letzter Bearbeiter außer bestimmter
Beitrag von: Markus Henke am 15.10.03 - 11:46:01
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)
.....
Titel: Re:$UpdatedBy letzter Bearbeiter außer bestimmter
Beitrag von: koehlerbv am 15.10.03 - 11:53:19
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
Titel: Re:$UpdatedBy letzter Bearbeiter außer bestimmter
Beitrag von: Markus Henke am 15.10.03 - 13:24:20
Da hast Du allerdings recht.  ;)
Titel: Re:$UpdatedBy letzter Bearbeiter außer bestimmter
Beitrag von: MrMagoo am 15.10.03 - 13:47:56
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
Titel: Re:$UpdatedBy letzter Bearbeiter außer bestimmter
Beitrag von: koehlerbv am 15.10.03 - 13:54:27
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
Titel: Re:$UpdatedBy letzter Bearbeiter außer bestimmter
Beitrag von: MrMagoo am 15.10.03 - 14:00:00
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.