Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Bernie110 am Oktober 02, 2014, 17:01:07

Titel: Abfragekiterium bei Optionsgruppe
Beitrag von: Bernie110 am Oktober 02, 2014, 17:01:07
Hallo Zusammen,

ich würde gerne wissen wollen wie das Abfragekriterium bei einer Optionsgruppe lauten muss.

Ich möchte über ein Formular Daten Filtern.
TOUR_ID = ungebundenes Feld
Rahmen143 = Optionsgruppe
    1 = Geplant
    2 = ungeplant
    3 = Beide

Das Feld in der Abfrage heisst auch TOUR_ID und ist ein Zahlenfeld.

Dieses Feld hat bereits ein Kriterium welches wie folgt lautet.

Wie "" & [Formulare]![DISPOPLAN]![TOUR_ID] & "*"

Nun möchte ich aber auch eine Filterung der Daten wenn ich eine Auswahl in der Optionsguppe treffe.

Bei
Optionswert 1 sollen mir alle Daten angezeigt werden
die
[TOUR_ID] > 0 sind

Optionswert 2sollen mir alle Daten angezeigt werden
die
[TOUR_ID] = 0 oder Istnull sind

Optionswert 2 sollen mir alle Daten angezeigt werden
die in der Abfrage enthalten sind
und somit dieses Kriterium
Wie "" & [Formulare]![DISPOPLAN]![TOUR_ID] & "*" ausgeführt werden

Die Abfrage hat noch mehre Kriterien
Hier der SQL String der gesamten Abfrage :
SELECT A_qyr_TA_MAIN_TABELLE.TA_ID, A_qyr_TA_MAIN_TABELLE.DT_NR, A_qyr_TA_MAIN_TABELLE.LA_ID, A_qyr_TA_MAIN_TABELLE.STATUS_TA, A_Qyr_LA_SUMMEN.LA_STATUS, A_qyr_TA_MAIN_TABELLE.DISPO_ART, A_qyr_TA_MAIN_TABELLE.Ladedatum, A_qyr_TA_MAIN_TABELLE.Ladezeit, A_qyr_TA_MAIN_TABELLE.Entladedatum, A_qyr_TA_MAIN_TABELLE.Entladezeit, A_qyr_TA_MAIN_TABELLE.ABS_ORT_LANG, A_qyr_TA_MAIN_TABELLE.EMPF_ORT_LANG, A_qyr_TA_MAIN_TABELLE.TOUR_ID, Sum(A_Qyr_LA_SUMMEN.CLL) AS CLL, Sum(A_Qyr_LA_SUMMEN.LM) AS LM, Sum(A_Qyr_LA_SUMMEN.QBM) AS QBM, Sum(A_Qyr_LA_SUMMEN.KG) AS KG, Sum(A_Qyr_LA_SUMMEN.KA) AS KA, Sum(A_Qyr_LA_SUMMEN.RO) AS RO, Sum(A_Qyr_LA_SUMMEN.PA) AS PA, A_qyr_TA_MAIN_TABELLE.ABS_Land, A_qyr_TA_MAIN_TABELLE.ABS_Plz, A_qyr_TA_MAIN_TABELLE.ABS_Ort, A_qyr_TA_MAIN_TABELLE.EMPF_Land, A_qyr_TA_MAIN_TABELLE.EMPF_Plz, A_qyr_TA_MAIN_TABELLE.EMPF_Ort, A_qyr_TA_MAIN_TABELLE.DISPO_Markierung, A_qyr_TA_MAIN_TABELLE.NL, A_qyr_TA_MAIN_TABELLE.SNDG_ART, A_Qyr_LA_SUMMEN.AuftragsNr, A_Qyr_LA_SUMMEN.LS_NR, A_qyr_TA_MAIN_TABELLE.LTW_ID, A_qyr_TA_MAIN_TABELLE.LTW, A_qyr_TA_MAIN_TABELLE.[NOT]
FROM A_qyr_TA_MAIN_TABELLE LEFT JOIN A_Qyr_LA_SUMMEN ON A_qyr_TA_MAIN_TABELLE.LA_ID = A_Qyr_LA_SUMMEN.LA_ID
GROUP BY A_qyr_TA_MAIN_TABELLE.TA_ID, A_qyr_TA_MAIN_TABELLE.DT_NR, A_qyr_TA_MAIN_TABELLE.LA_ID, A_qyr_TA_MAIN_TABELLE.STATUS_TA, A_Qyr_LA_SUMMEN.LA_STATUS, A_qyr_TA_MAIN_TABELLE.DISPO_ART, A_qyr_TA_MAIN_TABELLE.Ladedatum, A_qyr_TA_MAIN_TABELLE.Ladezeit, A_qyr_TA_MAIN_TABELLE.Entladedatum, A_qyr_TA_MAIN_TABELLE.Entladezeit, A_qyr_TA_MAIN_TABELLE.ABS_ORT_LANG, A_qyr_TA_MAIN_TABELLE.EMPF_ORT_LANG, A_qyr_TA_MAIN_TABELLE.TOUR_ID, A_qyr_TA_MAIN_TABELLE.ABS_Land, A_qyr_TA_MAIN_TABELLE.ABS_Plz, A_qyr_TA_MAIN_TABELLE.ABS_Ort, A_qyr_TA_MAIN_TABELLE.EMPF_Land, A_qyr_TA_MAIN_TABELLE.EMPF_Plz, A_qyr_TA_MAIN_TABELLE.EMPF_Ort, A_qyr_TA_MAIN_TABELLE.DISPO_Markierung, A_qyr_TA_MAIN_TABELLE.NL, A_qyr_TA_MAIN_TABELLE.SNDG_ART, A_Qyr_LA_SUMMEN.AuftragsNr, A_Qyr_LA_SUMMEN.LS_NR, A_qyr_TA_MAIN_TABELLE.LTW_ID, A_qyr_TA_MAIN_TABELLE.LTW, A_qyr_TA_MAIN_TABELLE.[NOT]
HAVING (((A_qyr_TA_MAIN_TABELLE.TA_ID) Like "*" & [Formulare]![DISPOPLAN]![TA_ID] & "*") AND ((A_qyr_TA_MAIN_TABELLE.STATUS_TA) Like "*" & [Formulare]![DISPOPLAN]![STATUS_TA] & "*") AND ((A_Qyr_LA_SUMMEN.LA_STATUS) Like "*" & [Formulare]![DISPOPLAN]![LA_STATUS] & "*") AND ((A_qyr_TA_MAIN_TABELLE.Ladedatum) Like [Formulare]![DISPOPLAN]![Ladedatum]) AND ((A_qyr_TA_MAIN_TABELLE.TOUR_ID) Like "" & [Formulare]![DISPOPLAN]![TOUR_ID] & "*") AND ((A_qyr_TA_MAIN_TABELLE.ABS_Land) Like "" & [Formulare]![DISPOPLAN]![ABS_Land] & "*") AND ((A_qyr_TA_MAIN_TABELLE.ABS_Plz) Like "" & [Formulare]![DISPOPLAN]![ABS_Plz] & "*") AND ((A_qyr_TA_MAIN_TABELLE.ABS_Ort) Like "" & [Formulare]![DISPOPLAN]![ABS_Ort] & "*") AND ((A_qyr_TA_MAIN_TABELLE.EMPF_Land) Like "" & [Formulare]![DISPOPLAN]![EMPF_Land] & "*") AND ((A_qyr_TA_MAIN_TABELLE.EMPF_Plz) Like "" & [Formulare]![DISPOPLAN]![EMPF_Plz] & "*") AND ((A_qyr_TA_MAIN_TABELLE.EMPF_Ort) Like "" & [Formulare]![DISPOPLAN]![EMPF_Ort] & "*") AND ((A_qyr_TA_MAIN_TABELLE.NL) Like "" & [Formulare]![DISPOPLAN]![NL] & "*") AND ((A_Qyr_LA_SUMMEN.AuftragsNr) Like "" & [Formulare]![DISPOPLAN]![Auftragsnummer] & "*") AND ((A_qyr_TA_MAIN_TABELLE.LTW) Like "" & [Formulare]![DISPOPLAN]![LTW] & "*") AND ((A_qyr_TA_MAIN_TABELLE.[NOT]) Like "" & [Formulare]![DISPOPLAN]![NOT] & "*"));



Titel: Re: Abfragekiterium bei Optionsgruppe
Beitrag von: MaggieMay am Oktober 02, 2014, 20:32:00
Hallo,

1. gib der Optionsgruppe einen gescheiten Namen, bspw. "optGrpPlanung"

2. ersetze diesen Teil der Abfrage:
((A_qyr_TA_MAIN_TABELLE.TOUR_ID) Like "" & [Formulare]![DISPOPLAN]![TOUR_ID] & "*") AND

durch diesen:
IIF(Forms!DISPOPLAN!optGrpPlanung = 1, A_qyr_TA_MAIN_TABELLE.Tour_ID > 0, IIF(Forms!DISPOPLAN!optGrpPlanung = 2, NZ(A_qyr_TA_MAIN_TABELLE.Tour_ID,0) = 0, ((A_qyr_TA_MAIN_TABELLE.TOUR_ID) Like "" & [Forms]![DISPOPLAN]![TOUR_ID] & "*"))) AND

BTW:
SQL spricht englisch, also sollte dort auch Forms anstelle von Formulare zu sehen sein

Des weiteren, wozu dir Gruppierung über alle Felder? Könnte darauf nicht verzichtet werden?
So oder so ist die HAVING-Klausel eigentlich eine WHERE-Bedingung, welche dann vor GROUP BY zu stehen hätte.
Titel: Re: Abfragekiterium bei Optionsgruppe
Beitrag von: Bernie110 am Oktober 02, 2014, 21:05:09
Hallo,

perfekt, funktioniert wunderbar
Vielen Dank !

Lg Bernie