Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Access Suchformular gibt falsches Ergebnis!!





Frage

Hallo! Ich bearbeite gerade eine DB mit 864 Datensätzen, in Access 97. Um leichter nach Datensätzen suchen zu können, habe ich ein suchformular mit mehreren Suchfeldern erstellt. Die ersten beiden Suchfelder machten mir keine Probleme, da hier ALLE 864 Datensätze mit Inhalten versehen sind. Ab dem dritten Datensatz wird es schon schwieriger: hier besitzen einige DS keinen Inhalt. Trotzdem möchte ich, dass diese Datensätze ebenfalls bei der Suche mit durchsucht werden (weil sie ja vielleicht andere Kriterien enthlten können. Also habe ich bei Suchfeld 3 den Zusatz "=NULL" zugefügt (s.u.): SELECT [werke].[ID], [werke].[WVZ-Nr], [werke].[TITEL], [werke].[JAHR], * FROM werke WHERE ((([werke].[WVZ-Nr]) Like "*" & Formulare!werkesuche!wkvsuchfeld & "*") And (([werke].[TITEL]) Like "*" & Formulare!werkesuche!txtsuchfeld & "*") And (([werke].[JAHR]) Like "*" & Formulare!werkesuche!jhrsuchfeld & "*" OR ([werke].[JAHR])=NULL)) ORDER BY [werke].[ID]; Jetzt werden mir bei einer Suche nach z.B. "1991" aber alle DS mit "1991" UND alle LEEREN DS angezeigt. Hat jemand eine Idee, wie ich die Abfrage formulieren muss, dass ALLE DS durchsucht aber AfterUpdate nur die "*" angezeigt werden. Danke für Hilfe Ilka

Antwort 1 von hikE

... das passiert sicher wegen dem "OR" in deiner Abfrage.

Du suchst auf diese Weise nach
1. "Irgendwas UND Irgendwasanderes"
2. ODER nach leeren Datensaetzen ohne weitere Einschränkung.

Also liefern die Ergebnisse deiner Abfrage logischerweise die Ergebnisse:

1. alle Daten die auf "Irgendwas UND Irgendwasanderes" passen
2. alle leeren Datensaetze.

Zur Syntax selbst kann ich leider nix sagen... ich mach so was immer mit Mausklicken in Formularen

GruZHikE (ein dilettierender Access97-Banause)

Antwort 2 von SJ

Wenn ich richtig verstanden habe willst du alle DS sehen die folgendem entsprechen:
-Die den Kriterien entsprechen und dem Datum = "1991" und außerdem
-Die den Kriterien entsprechen und Datum = NULL

Access sollte eigentlich die Klammern beachten (kenne aber A97 nicht so gut) in dem Syntax fehlte vor dem OR eine Klammer und dazu die schließende Klammer, also so:
SELECT [werke].[ID], [werke].[WVZ-Nr], [werke].[TITEL], [werke].[JAHR],[werke]. *
FROM werke WHERE ((([werke].[WVZ-Nr]) Like "*" &
Formulare!werkesuche!wkvsuchfeld & "*") And (([werke].[TITEL]) Like "*" &
Formulare!werkesuche!txtsuchfeld & "*") And ((([werke].[JAHR]) Like "*" &
Formulare!werkesuche!jhrsuchfeld & "*") OR ([werke].[JAHR])=NULL)) ORDER BY
[werke].[ID];


wenn es trotzdem nicht geht Probiere mal das( hoffe ich habe alle Klammern):
SELECT [werke].[ID], [werke].[WVZ-Nr], [werke].[TITEL], [werke].[JAHR],[werke]. *
FROM werke WHERE (((([werke].[WVZ-Nr]) Like "*" &
Formulare!werkesuche!wkvsuchfeld & "*") And (([werke].[TITEL]) Like "*" &
Formulare!werkesuche!txtsuchfeld & "*") And (([werke].[JAHR]) Like "*" &
Formulare!werkesuche!jhrsuchfeld & "*")) OR ((([werke].[WVZ-Nr]) Like "*" &
Formulare!werkesuche!wkvsuchfeld & "*") And (([werke].[TITEL]) Like "*" &
Formulare!werkesuche!txtsuchfeld & "*") And (([werke].[JAHR])=NULL)) RDER BY
[werke].[ID];

Mit freundlichen Grüßen
SJ


Antwort 3 von Ilka

Danke erstmal für die Hilfe, werde die Ansätze gleich mal ausprobieren.

Ilka