Juli 15, 2020, 14:50:05

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Formularfelder unabhängig voneinander ausfüllen können

Begonnen von 123Studentin, Januar 28, 2015, 16:00:29

⏪ vorheriges - nächstes ⏩

123Studentin

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

DF6GL

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....

123Studentin

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)

MaggieMay

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] & "*")
)
Freundliche Grüße
MaggieMay

123Studentin

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.

DF6GL

Hallo,

dann musst Du noch zusäzlich die "leeren" anderen Felder berücksichtigen:

....   or [Forms]![frm_qryBestimmung]![cbxSchalen] is Null ....

123Studentin

Januar 28, 2015, 17:37:05 #6 Letzte Bearbeitung: Januar 28, 2015, 17:52:05 von 123Studentin
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)
)










123Studentin