Hallo,
ich habe über eine Abfrage ein Formular erstellt. Dort existieren die 2 Kombinationsfelder [cbxSchalen] und [cbxGattungen]. Bisher habe ich es schon hinbekommen, dass man entweder nach Schalen suchen kann, oder nach den Gattungen und nicht beides angeben muss.
Als drittes Feld gibt es das Textfeld [txtLänge]. Wie muss ich das in meinen SQL-Code einbetten, damit ich letztendlich entweder die Schalen, Gattungen oder die Länge eingeben kann.
Bis jetzt muss ich eine Länge eingeben, um die Ergebnisse zu erhalten.
Hier ist der aktuelle SQL-Code
SELECT tblArten.FGTyp3, tblArten.oZ, tblSchalen.schalTypus, tblGattungen.gatName, tblArten.artName, tblArten.Bild.FileData, tblArten.LängeMin, tblArten.LängeMax, tblArten.BreiteMin, tblArten.BreiteMax, tblArten.StreifenMin, tblArten.StreifenMax
FROM tblSchalen INNER JOIN (tblGattungen INNER JOIN tblArten ON tblGattungen.gatID = tblArten.artgatIDRef) ON tblSchalen.schalID = tblGattungen.gatschalIDRef
WHERE (((tblArten.FGTyp3)=True) AND ((tblArten.oZ)=True)
AND ((tblSchalen.schalTypus) Like "*" & [Formulare]![frm_qryBestimmung]![cbxSchalen] & "*" Or (tblSchalen.schalTypus) Is Null)
AND ((tblGattungen.gatName) Like "*" & [Formulare]![frm_qryBestimmung]![cbxGattung] & "*" Or (tblGattungen.gatName) Is Null)
AND ((tblArten.LängeMin)<=[Formulare]![frm_qryBestimmung]![txtLänge]+1)
AND ((tblArten.LängeMax)>=[Formulare]![frm_qryBestimmung]![txtLänge]+1))
Danke schon mal im Voraus
Hallo,
eigentlich beantwortest Du die Frage ja selber...
Nimm statt "And" die "Or"-Verknüpfung in der Abfrage, richtige Klammersetzung ist entspr. der gewünschten Logik erforderlich....
Die Beantwortung is nicht so richtig des Problem, eher die Umsetzung in SQL (bin erst kürzlich damit in Kontakt gekommen)
Hab mal versucht des OR einzubauen.... (vorerst mal nur für die Kombinationsfelder), allerdings muss da irgendwo ein Fehler drin sein, da er mir jetzt meine komplette Datenbank pratkisch als Abfrage ausgibt und ich nicht mehr filtern kann.
SELECT tblArten.FGTyp3, tblArten.oZ, tblSchalen.schalTypus, tblGattungen.gatName, tblArten.artName, tblArten.Bild.FileData, tblArten.LängeMin, tblArten.LängeMax, tblArten.BreiteMin, tblArten.BreiteMax, tblArten.StreifenMin, tblArten.StreifenMax
FROM tblSchalen INNER JOIN (tblGattungen INNER JOIN tblArten ON tblGattungen.gatID = tblArten.artgatIDRef) ON tblSchalen.schalID = tblGattungen.gatschalIDRef
WHERE (((tblArten.FGTyp3)=True) AND ((tblArten.oZ)=True)
OR ((tblSchalen.schalTypus) Like "*" & [Formulare]![frm_qryBestimmung]![cbxSchalen] & "*")
OR ((tblGattungen.gatName) Like "*" & [Formulare]![frm_qryBestimmung]![cbxGattung] & "*"))
diese Bedingung muss allerdings immer gelten:
(((tblArten.FGTyp3)=True) AND ((tblArten.oZ)=True)
Hallo,
Zitat von: 123Studentin am Januar 28, 2015, 16:26:11diese Bedingung muss allerdings immer gelten:
(((tblArten.FGTyp3)=True) AND ((tblArten.oZ)=True)
dann ersetze das erste OR durch ein AND und setze geeignete Klammern:
WHERE (
((tblArten.FGTyp3)=True) AND ((tblArten.oZ)=True) AND
((tblSchalen.schalTypus) Like "*" & [Formulare]![frm_qryBestimmung]![cbxSchalen] & "*" OR
(tblGattungen.gatName) Like "*" & [Formulare]![frm_qryBestimmung]![cbxGattung] & "*")
)
Danke für deine Antwort,
habs jetzt grad so ausprobiert und wieder des Problem dass ich erst die gefilterte Abfrage nach der Eingabe in [cbxGattungen] erhalte. Nur nach Eingabe in [cbxSchale] ein Ergebnis zu haben funktioniert leider nicht.
Hallo,
dann musst Du noch zusäzlich die "leeren" anderen Felder berücksichtigen:
.... or [Forms]![frm_qryBestimmung]![cbxSchalen] is Null ....
so, erneut ausprobiert und es scheint mit euren Tipps leider nicht zu funktionieren.
Habs jetzt allerdings mit diesem Code hingebracht:
WHERE (
((tblArten.FGTyp3)=True) OR ((tblArten.oZ)=True)
)
AND ((tblSchalen.schalTypus) Like "*" & [Formulare]![frm_qryBestimmung]![cbxSchalen] & "*" Or (tblSchalen.schalTypus) Is Null)
AND ((tblGattungen.gatName) Like "*" & [Formulare]![frm_qryBestimmung]![cbxGattung] & "*" Or (tblGattungen.gatName) Is Null)
AND (
(((tblArten.LängeMin)<=[Formulare]![frm_qryBestimmung]![txtLänge]+1)
AND ((tblArten.LängeMax)>=[Formulare]![frm_qryBestimmung]![txtLänge]+1)) Or ([Formulare]![frm_qryBestimmung]![txtLänge] is Null)
)
Hallo,
und was ist dann das :
([Formulare]![frm_qryBestimmung]![txtLänge] is Null)
::)
ups tschuldigung, der Tipp hat geholfen :-D