Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: smoky am 26.03.14 - 16:16:48
-
Hallo,
Es tut mir leid, aber mir ist kein besserer Titel eingefallen :-)
Ich habe einen Agent der einmal täglich Dokumente in einer Ansicht aktualisieren soll. In einer DB klappt das ohne Probleme. Jetzt habe ich den Agent in in eine andere DB kopiert und bekomme immer den Fehler: Notes Error Entry not found in Index (Neu)
Beim Debugger sehe ich leider auch nicht was ihm auf einmal fehlt.
Die Felder in der betroffenen Maske habe ich kontrolliert, es sind hier einige DBLookups drinnen die ich aber mit einem @iserror abprüfe ob ein Ergebnis retour kommt. Mit F9 im offenen Dokument funktioniert die Berechnung ohne Probleme.
Hier mein Code
Option Public
Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim v As NotesView
Dim doc As NotesDocument
Dim agent As notesagent
Set db = s.CurrentDatabase
Set v = db.GetView("neu")
Set doc = v.GetFirstDocument
While Not doc Is Nothing
Call doc.ComputeWithForm(True, False)
Call doc.Save(False, True)
Set doc = v.GetNextDocument(doc)
Wend
Print "xxxx Dokumente aktualisiert"
End Sub
Und falls sich jemand fragt für was das gut sein soll :-) Die Dokumente werden Nachts automatisch erstellt und einige Felder zeigen Daten an die erst Vormittag zu Verfügung stehen.
Die Bearbeiter können sie natürlich immer selbst aktualisieren, nur für den Fall das mal einer nicht daran denkt wollte ich es automatisieren.
Ich nehme auch gerne andere Anregungen an.
lg
Christine
-
@smoky
Tritt der Fehler hier auf? --> Set doc = v.GetNextDocument(doc)
Bin grad in Eile... daher nur eine Vermutung: das doc wird verändert und ist danach nicht mehr in der View.
Lösung wäre in der While-Schleife etwa so. Sprich: das nächste Doc gleich am Anfang holen.
Set doc1 = v.GetNextDocument(doc)
' dann Dein Code
Set doc = doc1
Viel Erfolg,
Th.
-
Kann es sein, dass durch das ComputeWithForm die Dokumente aus der Ansicht verschwinden?
Dann knallt das bei
Set doc = v.GetNextDocument(doc)
weil doc nicht mehr in der Ansicht ist. Da gibt es verschiedene Herangehensweisen, findest Du hier vieles im Forum. Manche schalten die Aktualisierung der Ansicht ab, andere holen sich mit einem temporären Dokument das nächste, bevor sie das vorige verändern.
Ich halte es für das einfachste, das über eine NotesDocumentCollection zu tun, denn dann sparst Du erstens eine Ansicht und zweitens hast Du den o.g. Effekt nicht.
-
Vielen Dank an beide
Danke für den Hinweis, das hatte ich nicht bedacht und eine bereits vorhandene Ansicht verwendet, aus der verschwinden die Dokumente sobald das betroffene Feld berechnet ist.
Mit einer wo sie drin bleiben funktioniert der Agent wie gewollt ;D
lg
Christine