Zitat:
Original erstellt von met:
Hallo,Mit folgender Suche finde ich alle Items die in den Revisionen ein Formular eines bestimmten Typs enthalten:
Suchklasse: Item
item_id
AND ItemRevision<-item_tag.Form:IMAN_specification.object_type
Wie kann ich die Suche umkehren, dass ich alle Items finde, die kein Formular dieses Tpys in den Revisionen enthalten?
Hallo,
das geht nicht ganz so einfach aufgrund der Mechanismen die für die Suche und Vergleiche verwendet werden.
Du hast also Items mit und ohne einem Formular das über die Beziehung IMAN_specification unter der Item Revision referenziert sind. Beziehungen sind aber etwas Grundlegendes in TCE und stellen n:n Beziehungen dar.
Das heißt: eine Suchabfrage muss alle vorhandenen Beziehungen durchgehen und gegen Dein Suchkriterium prüfen. Dieses notwendige Vorgehen ist mit zwei Randbedingungen verknüpft.
1. Muss mindestens eine entsprechende Beziehung vorhanden sein um überhaupt etwas vergleichen zu können.
2. Die erste der gefundenen Beziehungen welche die Bedingung erfüllt beendet die Bedingungprüfung.
Daher findest Du vermutlich nichts, obwohl es im Suchabfrageneditor auch den Vergleich "ist nicht gleich" (!=) gibt.
Ich versuche mal etwas konkreter zu werden:
Du hast ein Item 001 mit dem Formular XYZ, was über Deine obige Suche gefunden wird.
item_id
AND ItemRevision<-item_tag.Form:IMAN_specification.object_type =
Du hast ein Item 002 ohne Formular XYZ, welches trotz Umkehrung der Bedingung nicht gefunden wird.
item_id
AND ItemRevision<-item_tag.Form:IMAN_specification.object_type !=
Das Problem ist, dass die Liste der Referenzen vom Typ Formular leer ist und damit der Vergleich überhaupt nicht durchgeführt werden kann. Wenn du jetzt unter dem Item 002 ein Formular vom Typ ABC einfügst ist die Liste nicht mehr leer under der Vergleich kann durchgefürht werden. Die Suchabfrage lautet also in Wirklichkeit: "Alle Items die ein Formular besitzen, das nicht vom Typ XYZ ist"
Wenn das jetzt schon alles wäre könntest Du damit vielleicht arbeiten. Aber leider schlägt jetzt auch noch der obige 2. Punkt zu. Nachdem Du zu Item 002 ein Formular vom Typ ABC hinzugefügt hast und die Suchabfrage damit funktioniert, fügst du nun ein zweites Fromular vom Typ XYZ hinzu.
Jetzt sollte eigentlich die Suchabfrage das Item 002 nicht mehr als Ergebnis liefern, da nun ja ein Formular vom Typ XYZ vorhanden ist. Sie liefert aber trotzdem das Item 002 als Ergebnis
Die Bedinung ist nämlich nach Prüfung des ersten Formulars erfüllt und damit beendet. In welcher Reihenfolge die Referenzen getestet werden (Einfügezeitpunkt, Typ, Benennung ...) habe ich noch nicht herausgefunden. Im ganzen heißt also eine Suchabfrage mit Negierung != etwa so:
"Alle Items die mindestens ein Formular besitzen, wobei eines der N Fromulare nicht vom Typ XYZ ist"
Das bringt Dich zwar nicht zu einem Ergebnis, aber vielleicht hilft es bei der zukünftigen Erstellung von Suchabfragen.
Gruß
Stefan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP