Hallo Leute,
ich muss eine Collection (einer View) 2 mal durchlaufen,
weiss aber nicht, ob und wie ich den 2 Durchlauf neu initialisiere.
Ich überprüfe ob es ein Dokument derselben Identnummer bereits gibt und welchen Bearbeiter es hat.
Hat das oder die anderen Dokumente mit derselben IDENTnummer noch keinen Bearbeiter, soll Ihnen im 2 Durchlauf der Bearbeiter zugewiesen werden.
Was mache ich beim Zweiten Durchlauf falsch ?
Manchmal wird er nämlich durchlaufen,
manchmal nicht. Dabei hätte in meinen Probedurchläufen die Collection nicht leer sein
dürfen ..
wundert sich
Don Pasquale
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = ws.CurrentDocument
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim temp As Integer
Dim dc As NotesDocumentCollection
Set db = session.CurrentDatabase
Set view = db.GetView( "(InternIdent)" )
Dim item As NotesItem
Dim nameList As Variant
Dim frontenddoc As Notesdocument
Dim key As String
Set frontenddoc = uidoc.document
Zielo$ = frontenddoc.e4fldWeiterverarbeitung(0)
Zielp$ = frontenddoc.Zielperson(0)
key$ = frontenddoc.e4fldIdentnummer(0)
Bearbeiter$ = frontenddoc.Bearbeiter(0)
Set dc = view.GetAllDocumentsByKey(key$, True)
Set doc = dc.getfirstdocument
While Not (doc Is Nothing)
Set item = doc.GetFirstItem("Identnummer")
If frontenddoc.e4fldIdentnummer(0) = doc.e4fldIdentnummer(0) Then
If doc.e4fldInitiator(0) <> "" Then
If doc.e4fldInitiator(0) <> frontenddoc.Zielperson(0) Then
' Ein anderer Mitarbeiter bearbeitet bereits diese Identnummer
' Dann kann dieses Dokument auch gleich dorthin
Zielp$ = doc.e4fldInitiator(0)
End If
End If
End If
Set doc = dc.GetNextDocument(doc)
Wend
Set uidoc = ws.EditDocument( True )
Call uidoc.FieldSetText("e4fldInitiator",Cstr(Zielp$))
Call uidoc.FieldSetText("e4fldIndexiert", "True")
Call uidoc.FieldSetText("e4fldNeuZugewiesen", "heute")
Call uidoc.FieldSetText("e4fldLetzterBearbeiter",Cstr(Bearbeiter$))
Call uidoc.FieldSetText("e4fldStatus",Cstr(Zielo$))
Call uidoc.FieldSetText("e4fldOrdner","Register")
temp = ws.folder("Register",True)
Call uidoc.save
Call uidoc.close
' Und nun wird überprüft, ob es noch andere Doks mit dieser IDentnummer gibt,
' die noch keinen Initiator haben
Set dc = view.GetAllDocumentsByKey(key$, True)
Set doc = dc.getfirstdocument
While Not (doc Is Nothing)
Set item = doc.GetFirstItem("Identnummer")
If frontenddoc.e4fldIdentnummer(0) = doc.e4fldIdentnummer(0) Then
If doc.e4fldInitiator(0) = "" Then
Call doc.ReplaceItemValue( "e4fldInitiator", Cstr(Zielp$) )
Call doc.Save( True, False )
End If
End If
Set doc = dc.GetNextDocument(doc)
Wend
End
Hi Rob,
was Du nicht wissen kannst, weil Du nicht
weisst wie meine Sicht (InterIdent) aufgebaut ist,
das aktuelle Dokument wird erst mit :
Call uidoc.FieldSetText("e4fldIndexiert", "True")
zu einem Teil der View (InternIdent),
das heisst, die 2 Colection muss einen größer sein, und genau das war sie eben nicht.
Das mein Code nicht gerade performant ist, bitte
ich geflissentlich zu übersehen, vielleicht finde
ich noch eine Windows*-Funktion in Lotus
Windows = altes indianisches Wort für "Der auf die Sanduhr starrt"
Gruß
Don Pasquale