Autor Thema: Agent der Dokumente aktualisiert tut nicht was er soll  (Gelesen 1604 mal)

Offline smoky

  • Aktives Mitglied
  • ***
  • Beiträge: 107
  • Ich liebe dieses Forum!
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
« Letzte Änderung: 26.03.14 - 16:52:14 von smoky »

Offline thkn777

  • Aktives Mitglied
  • ***
  • Beiträge: 176
Re: Agent der Dokumente aktualisiert tut nicht was er soll
« Antwort #1 am: 26.03.14 - 16:28:54 »
@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.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agent der Dokumente aktualisiert tut nicht was er soll
« Antwort #2 am: 26.03.14 - 16:30:13 »
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.

Offline smoky

  • Aktives Mitglied
  • ***
  • Beiträge: 107
  • Ich liebe dieses Forum!
Re: Agent der Dokumente aktualisiert tut nicht was er soll
« Antwort #3 am: 26.03.14 - 16:50:49 »
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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz