Moin Forum,
ich habe mich nach Jahren mal wieder mit ACCESS(ver2021) beschäftigt und habe mich bei einem Formular zum filtern von Datensätzen festgefahren.
Was gibt es?
2 Tabellen die jeweils in einer Kobobox angezeigt werden
- Orte; Ausgabe: [Formulare]![copy_qry_Ort_MA]![kobx_Filter_Ma]
- Ansprechpartner; [Formulare]![copy_qry_Ort_MA]![kobx_Filter_Ort]
1 Abfrage, die die Projekte filtern (soll)
Die Abfrage ist in ein Endlosformular eingefügt
bis hier funktioniert es schon mal erst den Ansprechpartner, dann den Ort und schließlich die Projekte anzuzeigen. wenn ich die Abfrage von hand mit Filterkriterien fülle gehts auch
Ich möchte aber noch die Orte nach den Mitarbeiten filtern und nicht immer die Gesamtliste sehen (auf dem Formular)
und hier kommt das Problem:
mit
wie "*"&[Formulare]![copy_qry_Ort_MA]![kobx_Filter_Ma]
bekomme ich in der Ergebnisliste "alle" Ergebnisse, wenn das Feld leer ist ABER ich filter nach dem Schlüssel (AUTOWERT) der Mitarbeiter somit bekomme ich bei der Auswahl einer Person (z.b. ID_Nr. 4) auch die 14, die 24 und so weiter (ist ja klar)
könnt ihr mir bitte helfen
der Sinn müsste (bei EXCEL) so aussehen und dasmit bin ich an ACCESS herangegangen:
wenn ( [Feld] ist leer
dann "*"
sonst [feld])
ich bekomme es einfach nicht hin...
DAnke für eure Hilfe
Zitatwie "*"&[Formulare]![copy_qry_Ort_MA]![kobx_Filter_Ma]
bekomme ich in der Ergebnisliste "alle" Ergebnisse, wenn das Feld leer ist ABER ich filter nach dem Schlüssel (AUTOWERT) der Mitarbeiter somit bekomme ich bei der Auswahl einer Person (z.b. ID_Nr. 4) auch die 14, die 24 und so weiter (ist ja klar)
Wenn du mit einem Schlüssel arbeitest gibt es kein "Wie" (LIKE) nur ein "=".
hi, danke für den Tip, aber ich verstehe den wohl falsch. in der Zeile "Kriterien"
"*" & [Formulare]![copy_qry_Ort_MA]![kobx_Filter Ma]
ohne wie einzutragen funktioniert nicht mit einem LEEREN, unausgefüllten Schlüssel
Diese Wenn()-Funktion hab ich als ausgang genommen:
Wenn([Formulare]![copy_qry_Ort_MA]![kobx_Filter Ma]="";"*";"*" & [Formulare]![copy_qry_Ort_MA]![kobx_Filter Ma])
Antwort von ACCESS: [...]zu komplex[...] ergo geht nicht
Wenn([Formulare]![copy_qry_Ort_MA]![kobx_Filter Ma]="";wie "*" & [Formulare]![copy_qry_Ort_MA]![kobx_Filter Ma];"*" & [Formulare]![copy_qry_Ort_MA]![kobx_Filter Ma])
geht auch nicht mit leerer Kombobox - ich gebe einfach nix in die MsgBox ein, die aufpoppt, wenn die Abfrage ausgeführt wird
Zeige mal lieber die ganze Abfrage. Aber nicht in der Entwurfsansicht
sondern den SQL-String.
Zitatwenn ( [Feld] ist leer
dann "*"
sonst [feld])
Das wäre dann
Wenn([Formulare]![copy_qry_Ort_MA]![kobx_Filter Ma]="";"*";[Formulare]![copy_qry_Ort_MA]![kobx_Filter Ma])
Du willst aber mit dem Ergebnis filtern, - dann muss das in der WHERE-Klausel
mit passender Verknüpfung (AND/OR) zu den anderen Filterbedingungen stehen.
Danke für die Hilfe
OK, ich hab das noch nie gemacht, dachte daher, dass der SQL-Code bei anderen nichts sinnvolles anzeigen kann:
SELECT qry_MA_Projekt.Mitarb_ID, Ort_PLZ_Name.ort_name, Ort_Landkreis.landkreis_name, Ort_base.plz, Join_MA_Ort.gültig_ab, Join_MA_Ort.gültig_bis, Ort_base.Ort_ID, Join_MA_Ort.Mitarbeiter_Art, qry_sum_Projekte_in_ort.AnzahlvonProjekt_ID, qry_sum_Projekte_in_ort.Projektjahr, qry_MA_Projekt.Projekt_Nummer, qry_MA_Projekt.Projekt_Name, qry_MA_Projekt.Projekt_ID, Mitarbeiter_Base.MA_Name, qry_MA_Projekt.Projekt_Status, qry_MA_Projekt.Projekt_Stand, qry_MA_Projekt.Projekt_erstellt
FROM ((((Ort_PLZ_Name INNER JOIN (Ort_Landkreis INNER JOIN (Ort_Bundesland INNER JOIN Ort_base ON Ort_Bundesland.Bundesland_ID = Ort_base.Bunesland_ID) ON Ort_Landkreis.Lankreis_ID = Ort_base.Landkreis_ID) ON Ort_PLZ_Name.ORT_NAME_ID = Ort_base.ort_name_ID) INNER JOIN Join_MA_Ort ON Ort_base.Ort_ID = Join_MA_Ort.ort_ID) INNER JOIN qry_MA_Projekt ON (Join_MA_Ort.ma_ID = qry_MA_Projekt.Mitarb_ID) AND (Join_MA_Ort.ort_ID = qry_MA_Projekt.ort_ID)) INNER JOIN qry_sum_Projekte_in_ort ON (qry_MA_Projekt.Projekt_Jahr = qry_sum_Projekte_in_ort.Projektjahr) AND (qry_MA_Projekt.ort_ID = qry_sum_Projekte_in_ort.ort_ID)) INNER JOIN Mitarbeiter_Base ON qry_MA_Projekt.Mitarb_ID = Mitarbeiter_Base.Mitarb_ID
GROUP BY qry_MA_Projekt.Mitarb_ID, Ort_PLZ_Name.ort_name, Ort_Landkreis.landkreis_name, Ort_base.plz, Join_MA_Ort.gültig_ab, Join_MA_Ort.gültig_bis, Ort_base.Ort_ID, Join_MA_Ort.Mitarbeiter_Art, qry_sum_Projekte_in_ort.AnzahlvonProjekt_ID, qry_sum_Projekte_in_ort.Projektjahr, qry_MA_Projekt.Projekt_Nummer, qry_MA_Projekt.Projekt_Name, qry_MA_Projekt.Projekt_ID, Mitarbeiter_Base.MA_Name, qry_MA_Projekt.Projekt_Status, qry_MA_Projekt.Projekt_Stand, qry_MA_Projekt.Projekt_erstellt
HAVING (((qry_MA_Projekt.Mitarb_ID) Like "*" & [Formulare]![copy_qry_Ort_MA]![kobx_Filter Ma]) AND ((Ort_PLZ_Name.ort_name) Like "*" & [Formulare]![copy_qry_Ort_MA]![cbox_Filter_Ort]));
langsam glaub ich, dass ich irgendwo eien anderen Fehler habe, der die DB sabotiert
Grüße ans Forum
Suche mal nach "SQL-Formatter" verwende ihn und schicke die
Abfrage dann mal ordentlich formatiert. Wenn du dann vorher
noch Aliase verwenden würdest, schau ich mir die Abfrage noch
mal an. Da scheint noch mehr nicht korrekt zu sein ausser deinem
Filter, der wahrscheinlich gar nicht in die HAVING-Klausel gehört
sondern in eine WHERE-Klausel. Sieht man dann im formatierten String.
ich habe die DB neu aufgebaut. wo auch immer der Fehler gelegen hat die abfrage war nicht alleine schuld
danke das ihr mir helfen wolltet
Lord Wuffel