Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: robertpp am 06.10.05 - 09:29:48
-
Hallo,
Ich hab mir aus der discsw6.ntf den Agent Send Newsletter genommen und in meiner db eingebaut. Jetzt hab ich das Problem das der Agent dann geht solange ich nicht mit FTSearch die neuen und modifizierten Doc's versende. Wenn ich aber mit db.UnprocessedFTSearch die neuen und modifizierten Doc's suchen will dann gibt er mir immer Coll.Count = 0 zurück obwohl ich neue doc's erstellt habe?
An was kann das liegen? Was noch sehr komisch ist wenn ich den Agent von Hand starte dann schickt er ein Mail mit den richtigen Einträgen. Wenn ich dann aber ein neues Doc erstelle und der Agent läuft dann dann ist der Coll.Count wieder Null.
Der Code ist gleich zu dem : http://www.atnotes.de/index.php?topic=22952.0
-
Arbeitest Du mit Leserfeldern!? Hat der Server die entsprechende Leseberechtigung ( Rolle )?
Gruß
Frank
-
Nein es sind keine Lesefelder vorhanden. Ich hab es auch schon mit der discws6.ntf versucht. Dort sind auch keine Lesefelder. Wenn ich aber dort den FT-Index erstelle dann muss er eben mit FTSearch suchen und dann findet er nichts mehr.
-
Merkwürdig! Vorgabeansicht ist definiert? Agenteinstellungen sind ok? Evtl. gibt es ja ein Problem mit dem Volltextindex auf dem Server? Ich hatte mal ähnliche Probleme mit einem db.search und da konnten unsere Administratoren weiterhelfen.
Bei der ganzen Newsletter-Thematik lohnt es sich meines Erachtens immer mal wieder sich die einfache Aktion "Infobrief-Übersicht" mal genauer anzusehen. Damit kann man sehr schöne Ergebnisse erzielen.
Gruß
Frank
-
Das komische daran ist ja wenn ich den Agent von hand starten dann läuft er ja. Und das mit der Vorgabeansicht brauch ich ja nur damit ich versenden kann. Es kommt aber schon davor dazu das der Collection.Count = 0 ist.
-
So ich denke ich hab jetzt den Fehler gefunden. Es war ja nicht wirklich ein fehler aber damit geht es jetzt:
If ( db.LastModified > db.LastFTIndexed ) Then
Call db.UpdateFTIndex( False )
End If
und danach wird dann DoFTSearch ausgeführt.
Jetzt hab ich noch eine Frage:
Wenn ich den Agent jetzt ändere dann wird ja jedes mal nach dem speichern des Agents alle doclinkd die dem Suchkriterium entsprechen versendet. Jetzt hab ich mir gedacht wenn ich in einem Profiledoc einen Status setze "nicht ausführen" = True und im Agent abfrage ob er true ist und dann
If Not (failed) Then
Set collection = db.UnprocessedDocuments
For n = 0 To collection.Count
Set note = collection.GetNthDocument(n)
Call s.UpdateProcessedDoc(note)
Next
End If
ausführe und danach das Flag auf False setzen und beim nächste ausführen nimmt er dann nur noch die neuen und modifizierten Doc's.
Ist das eine brauchbare Lösung oder gibt es da schon etwas fertiges?
Robert