Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: 123Studentin am Januar 28, 2015, 16:00:29

Titel: Formularfelder unabhängig voneinander ausfüllen können
Beitrag von: 123Studentin am Januar 28, 2015, 16:00:29
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
Titel: Re: Formularfelder unabhängig voneinander ausfüllen können
Beitrag von: DF6GL am Januar 28, 2015, 16:07:18
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....
Titel: Re: Formularfelder unabhängig voneinander ausfüllen können
Beitrag von: 123Studentin am Januar 28, 2015, 16:26:11
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)
Titel: Re: Formularfelder unabhängig voneinander ausfüllen können
Beitrag von: MaggieMay am Januar 28, 2015, 16:50:23
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] & "*")
)
Titel: Re: Formularfelder unabhängig voneinander ausfüllen können
Beitrag von: 123Studentin am Januar 28, 2015, 16:58:48
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.
Titel: Re: Formularfelder unabhängig voneinander ausfüllen können
Beitrag von: DF6GL am Januar 28, 2015, 17:02:26
Hallo,

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

....   or [Forms]![frm_qryBestimmung]![cbxSchalen] is Null ....
Titel: Re: Formularfelder unabhängig voneinander ausfüllen können
Beitrag von: 123Studentin am Januar 28, 2015, 17:37:05
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)
)








Titel: Re: Formularfelder unabhängig voneinander ausfüllen können
Beitrag von: DF6GL am Januar 28, 2015, 17:45:07
Hallo,

und was ist dann das :

([Formulare]![frm_qryBestimmung]![txtLänge] is Null)

::)


Titel: Re: Formularfelder unabhängig voneinander ausfüllen können
Beitrag von: 123Studentin am Januar 28, 2015, 17:47:06
ups tschuldigung, der Tipp hat geholfen :-D