Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: JayDee am 22.01.18 - 13:43:04

Titel: Abfrage des form-Items funktioniert nicht zuverlässig
Beitrag von: JayDee am 22.01.18 - 13:43:04
Ein Problem, das schon lange auftritt, aber nur in einer Datenbank, es wirkt sich auf Ansichten und Search-Abfragen (Lotusscript > NotesDatabase.Search ist gemeint) aus. Ein Workaround ist zwar erfolgreich, aber ich wüsste gern wo es hier hakt, wo ich ansetzen könnte,  und ob noch jemand das Problem kennt.

Also:
Eine Ansicht oder eine db.Search-Abfrage findet Dokumente nicht, wenn das Form-Item 1:1 abgefragt wird:

form="xyz" & doc_ident="123"

Die Ansicht zeigt das Dokument so nicht an, ein db.Search(...) liefert eine Collection mit Count=0
Schreibt man die obige Auswahl- bzw. Suchformel aber wie folgt um:

@Contains(form;"xyz") & doc_ident="123"

dann ist alles i.O. , die Ansicht zeigt das Dokument an, db.Search liefert nun eine Collection mit Count=1.

Die Datenbank ist natürlich FT-indiziert, nur spielt das ja hier gar keine Rolle.
Die Datenbank enthält einige tausend Dokumente, und bevor der Workaround da war, wurden dann z.B. mal eben 800 Dokument einfach nicht angezeigt/gefunden.

Durch den funktionierenden Workaround gibt es kein akutes Problem mehr, aber irgendeinen Grund muss das Verhalten ja haben, ich würd es halt gern verstehen/lösen.
Titel: Re: Abfrage des form-Items funktioniert nicht zuverlässig
Beitrag von: eknori am 22.01.18 - 13:58:53
Das Einzige, was ich mir vorstellen kann:

form enthält "xyz", " xyz" , "xyz "

Dann würde form= nur den ersten Fall zurückliefern.

@Contains liefert aber für alle Fälle Dolumente zurück.

Da beide Varianten CaseSensitive sind würde ich auch noch mit @Contains(@lowercase(form);"xyz") arbeiten, um auch noch diese Variante abzufangen.

Ich verwende schon seit ewigen zeiten @Contains
Titel: Re: Abfrage des form-Items funktioniert nicht zuverlässig
Beitrag von: Peter Klett am 22.01.18 - 14:10:46
Ich würde mir die Form-Items der Dokumente ansehen, die nicht mit Form = "xyz" gefunden werden, da ist bestimmt etwas krumm. Ein Form-Item ist ja nicht anders als irgendein anderes Item. NotesDatabase.Search nutze ich sehr intensiv und habe dieses Verhalten noch nie feststellen können. Allerdings beinhalten unsere Masken alle ein "Form"-Feld, und über dieses Feld bekommen alle Masken zwingend den gleichen Wert, z.B. bzgl. Groß-Kleinschreibung.
Titel: Re: Abfrage des form-Items funktioniert nicht zuverlässig
Beitrag von: Tode am 22.01.18 - 14:13:18
Ergänzend zu Ulrich: Schau Dir doch mal die Properties des betroffenen Dokumentes an und kopier Dir den Content des Items "Form" ... da siehst Du, was "wirklich" drin steht...
Titel: Re: Abfrage des form-Items funktioniert nicht zuverlässig
Beitrag von: JayDee am 22.01.18 - 14:48:50
Tja man muss das alles nur mal aufschreiben und schon kommen neue Eingebungen  ;)
Danke für eure Tipps.
Ich habe festgestellt, dass die Form-Items bei den Dokumenten, die nicht angezeigt/gefunden werden, vom Typ "Textlist" sind. Ändert man diesen mit scanEZ um auf "Text", ist das Problem sofort verschwunden.
Jetzt gilt es also zu klären, warum manche Dokumente hier einen anderen Typ haben...

Wir haben bislang prinzipiell kein Form-Feld in unseren Masken.
Titel: Re: Abfrage des form-Items funktioniert nicht zuverlässig
Beitrag von: ronka am 22.01.18 - 15:44:27
dann sind diese Dokumente wahrscheinlich per Script oder Import erstellt worden, kann das sein ?
Titel: Re: Abfrage des form-Items funktioniert nicht zuverlässig
Beitrag von: JayDee am 22.01.18 - 15:51:39
Ja das ist so, eigentlich werden alle Dokumente aber per Script erstellt, es gibt da mehrere Wege, auch Importe. Stets wird aber in den Scripten doc.Form="xy" gesetzt.

Ergänzend zu meinen vorigen Ausführungen:
Es ist nicht so, dass alle Dokumente, deren Form-Item vom Typ "Textlist" ist, nicht gefunden werden. Die allermeisten werden gefunden.
Es ist aber so, dass die Dokumente, die nicht gefunden werden, stets ein Form-Item vom Typ "Textlist" haben.
Titel: Re: Abfrage des form-Items funktioniert nicht zuverlässig
Beitrag von: JayDee am 23.01.18 - 07:45:13
Noch ein paar Ergänzungen.
Von ca. 24.000 Dokumenten insgesamt haben ca. 11.000 ein Form-Item vom Typ "Text List", die anderen "Text". Verglichen mit dieser großen Anzahl ist die Menge der Dokumente, die tatsächlich nicht gefunden würden, vergleichsweise gering.

Die Datenbank gibt es seit vielen Jahren, beide Varianten treten seit Anbeginn auf.

Was merkwürdig ist: Wenn der Typ des Form-Items "Text" ist (zu sehen über die Dokumenteigenschaften, wenn das Dokument in einer Ansicht fokussiert ist), so ändert sich diese Anzeige sofort auf "Text List", wenn man dasselbe Dokument im GUI offen hat. scanEZ zeigt an "Text".
Titel: Re: Abfrage des form-Items funktioniert nicht zuverlässig
Beitrag von: Peter Klett am 23.01.18 - 08:18:25
Was merkwürdig ist: Wenn der Typ des Form-Items "Text" ist (zu sehen über die Dokumenteigenschaften, wenn das Dokument in einer Ansicht fokussiert ist), so ändert sich diese Anzeige sofort auf "Text List", wenn man dasselbe Dokument im GUI offen hat.
Das ist bei mir auch so, würde ich nicht überbewerten. Allerdings habe ich stichprobenartig kein Dokument gefunden, dass in der Ansicht schon den Datentyp Textliste hat, da sind alle Text.
Titel: Re: Abfrage des form-Items funktioniert nicht zuverlässig
Beitrag von: ronka am 23.01.18 - 08:41:32
Denk bitte dran das in Notes ALLES listen sind, auch wenn die nur ein Element haben.

Kann es sein das ein solches Dokument, wenn mittels F9 ein Refresh gemacht wird im Edit Mode, dann zu Text geändert wird ?

Sprich das die Dokumente noch nie ein Refresh und Speicherung bekommen haben nach erstellung ?

Was passiert mit das Feld wenn es einmal in den UI bearbeitet und erneut gespeichert wird ?
Titel: Re: Abfrage des form-Items funktioniert nicht zuverlässig
Beitrag von: Tode am 23.01.18 - 09:38:54
Also ich persönlich würde je eher auf das "Summary"- Flag des Feldes tippen als auf die Text List- Eigenschaft...
Titel: Re: Abfrage des form-Items funktioniert nicht zuverlässig
Beitrag von: JayDee am 23.01.18 - 09:56:22
Zitat
Denk bitte dran das in Notes ALLES listen sind, auch wenn die nur ein Element haben.
Klar.
Zitat
Kann es sein das ein solches Dokument, wenn mittels F9 ein Refresh gemacht wird im Edit Mode, dann zu Text geändert wird ?
Sprich das die Dokumente noch nie ein Refresh und Speicherung bekommen haben nach erstellung ?
Nein, das ist nicht der Fall.
Zitat
Was passiert mit das Feld wenn es einmal in den UI bearbeitet und erneut gespeichert wird ?
Nichts, keine Veränderung.

Zitat
Das ist bei mir auch so, würde ich nicht überbewerten. Allerdings habe ich stichprobenartig kein Dokument gefunden, dass in der Ansicht schon den Datentyp Textliste hat, da sind alle Text.
Stimmt. Hier verhalten sich tatsächlich alle Dokumente in allen Datenbanken offenbar gleich. s.o. v. Ronka "alles ist Liste".

Ich danke euch für eure Hinweise. Sobald ich hier etwas rausbekomme schreibe ich es hier ran.