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] & "*"));
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.
Hallo,
perfekt, funktioniert wunderbar
Vielen Dank !
Lg Bernie