Autor Thema: NotesView.GetNextDocument - Dokumente werden ausgelassen?  (Gelesen 2282 mal)

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Freunde, Admins, Designer!
Ich bin nicht gekommen, um Notes zu preisen ....

So, Scherz beiseite, ich habe eine Frage an das p.t. Publikum:
Ich hab einen Agent, der zeitgesteuert einmal in der Nacht über eine View rattert. Die klassische
Code
Set docAct = viewA.GetFirstDocument()
Do While Not (docAct Is Nothing)
	Set docAct = viewA.GetNextDocument(docAct)
Loop
Schleife, nix besonderes.

Nun hab ich aber das Problem, dass der Agent einige Dokumente "überspringt".

Meine Überlegung dazu:
Der Agent setzt in den Dokumenten Felder und speichert das Dokument. Durch den geänderten Feldinhalt fliegt das Dok dann aus der View raus und GetNextDocument verhaspelt sich.

Wäre das plausibel? Wenn ja, wie umgehe ich dieses Problem? Mit einer ViewEntryCollection? Wenn nein, was könnte die Ursache für die ausgelassenen Dokumente sein?

Freu mich auf Euren Input.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: NotesView.GetNextDocument - Dokumente werden ausgelassen?
« Antwort #1 am: 06.12.06 - 14:09:11 »
Deine Erklärung klingt für das Phänomen scheint für mich plausibel, ich hatte schon mal ein ähnliches Problem, was aber in einer Endlosschleife resultierte.

Vielleicht machst du es mal so:
Du holst dir die Dokumente, die in der View sind, per db.Search mit der Auswahlformel der Ansicht in eine DocumentCollection.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: NotesView.GetNextDocument - Dokumente werden ausgelassen?
« Antwort #2 am: 06.12.06 - 14:09:44 »
Verehrter Freund, Ober-Admin und manchmal auch Designer,

wenn - während der Agent durch eine Ansicht semmelt - dort Dokumente verschwinden (ob gelöscht oder wegen geänderter Bedingungen), dann kommt GetNextDocument tatsächlich aus dem Tritt.

Insofern ich Deinen Fall jetzt beurteilen kann, wäre es wohl das einfachste, wenn das NextDocument schon instantiiert würde, BEVOR Feldänderungen zur Verbannung des aktuell in Bearbeitung befindlichen Dokuments aus der Ansicht führen.

Also:
GetFirstDocument
Do While Not
- Set docNext = GetNextDocument (docAct)
- Bearbeite docAct
- docAct = docNext
Loop

Alternativ kann man natürlich auch mit NotesView.AllEntries eine NotesViewEntryCollection bilden, die dann ja von einer view selection formula unabhängig ist. Doch wozu ... Obiges Verfahren spart Objekte.

HTH & beste Grüsse nach Wien,
Bernhard

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: NotesView.GetNextDocument - Dokumente werden ausgelassen?
« Antwort #3 am: 06.12.06 - 14:15:54 »
Das ganze hat gegenüber meiner Idee sogar noch einen entscheidenden Vorteil: Ändert sich die SelectionFormel der Ansicht, müsste man auch das db.Search anpassen, was aber schnell mal vergessen werden kann... --> Bernhards Lösung wählen  ;)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: NotesView.GetNextDocument - Dokumente werden ausgelassen?
« Antwort #4 am: 06.12.06 - 14:39:09 »
Markus, dann breche ich mal eine Lanze für Deine Variante: Ab R6 kannst Du mit NotesView.SelectionFormula eben diese auslesen und für Dein NotesDatabase.Search verwenden. Eine Umprogrammierung wäre somit nicht erforderlich.

Bernhard

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: NotesView.GetNextDocument - Dokumente werden ausgelassen?
« Antwort #5 am: 06.12.06 - 14:58:03 »
Danke die Herren, es ist eine Freude zu sehen, wie schnell und Kompetent einem hier geholfen wird.

Ich werde Bernhards Ansatz wählen, da er mir a) logisch erscheint und b) kauminvasiv ist (das ist Code, den ich geerbt habe, da will ich eigentlich so wenig wie möglich ändern).

Markus, Dein Ansatz hat auch was, aber Bernhards Lösung erscheint mir in diesem Fall die praktikablere.

Danke für Eure Zeit!
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline datenbanken24

  • Senior Mitglied
  • ****
  • Beiträge: 390
  • Geschlecht: Männlich
  • Stammgast
    • datenbanken24
Re: NotesView.GetNextDocument - Dokumente werden ausgelassen?
« Antwort #6 am: 06.12.06 - 22:14:42 »
Es gibt noch einen dritten Weg,
der sehr einfach ist und gleichzeitig die Performance des Agenten erhöht:

Vor der Schleife eine Zeile:

View.AutoUpdate=False

danach wieder:

View.AutoUpdate=True

Die Ansicht bleibt solange "false" aktiv ist in der gleichen Reihenfolge,
auch wenn Docs gespeichert werden.
Auch wird die Ansicht nicht nach jedem Speichern eines Docs neu indiziert,
was ordentlich Performance bringt. (abhängig von der Anzahl der wirklichen Doc Saves)

Gruß,
Uwe


Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: NotesView.GetNextDocument - Dokumente werden ausgelassen?
« Antwort #7 am: 07.12.06 - 07:16:18 »
Hallo Uwe,

ja klingt auch nicht schlecht. Mal schaun, ob meine bisherigen Änderungen helfen. Wenn nicht, ist View.AutoUpdate=False dran.  ;D
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz