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)
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
-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
Ilka

