Domino 9 und frühere Versionen > ND7: Entwicklung

Verwirrung: Agent manuell aufgerufen geht - per Script nicht -> hä?

(1/3) > >>

Basti*:
Hallo zusammen,

hab hier ein merkwürdiges Verhalten bei meinen Scripten. Ich habe eine Ansicht mit einem ImportButton, der hat quasi folgenden Code


--- Code: ---@Command( [RunAgent] ;"Delete"); 
@Command( [RunAgent] ;"Import");
@Command( [RunAgent] ;"Update");

--- Ende Code ---

Es passiert (normalerweise) folgendes:

Delete: Alle Dokumente mit Form="abc" (per db.ftsearch) werden gelöscht.
Import: Eine CSV-Datei wird geladen und es wird für jede Zeile ein neues Dokument (Form="abc") erzeugt
Update: ich suche (per db.ftsearch) ein Dokument (form="xyz") und aktualisiere Daten

Zwischendurch wird der db.index laufend aktualisiert.

Auf dem autarken Entwicklungssystem (lokal) klappt das wunderbar.

Auf dem Server (8er) klappte(!) das bis vor kurzem auch! Jetzt haben wir vor ein paar Tagen hier die 8.5er Clients bekommen. Und nun gehts nicht mehr.

Das Delete geht. Auch der Import. Aber beim Update findet er scheinbar keine Dokumente bei der Suche. Das erste Dok ist bereits leer:



--- Code: ---...
query$ = |(FIELD FORM = "abc")|
Set dc = db.FTSearch(query$,0)
Set doc = dc.GetFirstDocument

While Not (doc Is Nothing)
    count = count + 1
    ...
    ...
Wend
...

--- Ende Code ---

count bleibt null :( => doc ist nothing

Erst wenn ich den UpdateAgent manuell über das DropDownMenü Aktionen aufrufe, geht es.
Hat jemand eine Idee, woran das klemmt?
Liegt das am Aufruf der Scripte über die Agents?

Basti

Peter Klett:
Die Ursache für Dein Problem kenne ich nicht, ich würde aber die Suche der Dokumente nicht über einen FTSearch machen, sondern über einen Search. Beim Search gibst Du eine Selektionsformel wie bei einer Ansicht ein. Wenn ich das richtig verstehe, suchst Du im Volltext nach Dokumente die in einem Feld genau einen Wert haben, und da ist Search viel besser.

query$ = |FORM = "abc"|
Set dc = db.Search(query$, Nothing, 0)    
Set doc = dc.GetFirstDocument

While Not (doc Is Nothing)
    count = count + 1
    ...
    ...
Wend

Glombi:
Ich würde überhaupt nicht suchen, sondern ein Ansicht verwenden, deren erste Spalte nach Form sortiert ist.

Die Collection bekommst Du dann mit
set view = db.GetView("Name der Ansicht")
-> hier evtl. sicherheitshalber:call view.Refresh
set dc = view.GetAllDocumentsByKey( "abc", True )

Andreas

Basti*:
Ja, das Suchen per Anischt hatte ich anfangs auch. Dabei hatte ich irgendwann das Problem, dass ich aus welchen Gründen auch immer "GeisterDokumente" hatte. Die waren da, wurden aber in der Ansicht nicht angezeigt.

Bei einer anderen Suche, die dann über db.ftsearch lief (weil mehrere Felder vergleichen wurden), wurden die dann doch gefunden und haben Chaos verursacht. Hat mich n paar Stunden & Nerven gekostet, bevor ich geschnallt hatte, dass dort noch ein "Geist" sein Unwesen treibt. Per db.ftsearch wurden diese Geister gefunden und konnte gelöscht werden. Daher bin ich bei db.ftsearch gelandet.

Kennt ihr derartige GeisterDokumente und wisst, wie die zustande kommen?

Basti

flaite:
Interessant zumindest für mich, der wo gewaltige praktische Lücken im Umgang mit Lotus Domino angesammelt hat.
Kannst Du bitte vorher einmal den Volltext-Index noch mal neu aufbauen und dann den Agenten noch mal starten?
In meiner aktiven Zeit hätte ich immer die Lösung von Andreas gewählt.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln