WENN-Funktion in Abfrageentwurf
r.gottier
Gesendet: 26.12.14 12:25
Betreff: RE: WENN-Funktion in Abfrageentwurf


New user

Beiträge: 4

Hallo Karl,

hoffentlich hattest Du - hattet Ihr - schöne Weihnachten.

Gerne kopiere ich hier mal die Datenherkunft des Formulars rein:

SELECT T_PW.Index, T_FZIND.[Fz-Art], T_FZIND.[IDF-Fz-Gruppe], T_FZIND.ST, T_FZIND.RCD, T_FZIND.TYP, T_FZIND.[FZ-NR], IIf(Len([FZ-NR])<17,"0",IIf(Mid([FZ-NR],8,1)=" ",Left([FZ-NR],2) & Mid([FZ-NR],4,2) & Mid([FZ-NR],7,1) & Mid([FZ-NR],9,3) & Mid([FZ-NR],13,3) & Right([FZ-NR],1),IIf(Mid([FZ-NR],10,1)=" ",Left([FZ-NR],2) & Mid([FZ-NR],4,2) & Mid([FZ-NR],7,3) & Mid([FZ-NR],11,1) & Mid([FZ-NR],13,3) & Right([FZ-NR],1),Left([FZ-NR],2) & Mid([FZ-NR],4,2) & Mid([FZ-NR],7,2) & Mid([FZ-NR],10,2) & Mid([FZ-NR],13,3) & Right([FZ-NR],1)))) AS [FZ-NR_Kette], T_FZIND.UC, T_FZIND.TC, T_FZIND.IDF_Eigentümer, T_Eigentümer.Kürzel, T_FZIND.UE, T_FZIND.Schild, T_FZIND.LR, T_FZIND.LHR, T_FZIND.LHR_unsicher, T_FZIND.LHR_unpraezis, T_FZIND.LTK, T_PW.WC, T_FZIND.TabBem, T_FZIND.[L-Reg], T_FZIND.[L-Ort], T_FZIND.AR, T_FZIND.Bemerkungen, T_FZIND.Suche_Prio1, T_FZIND.Suche_Prio2, T_PW.[AI-1], T_PW.[AI-2], T_PW.[AI-3], T_PW.[AI-4], T_FZIND.[Anz-DT], T_FZIND.[Anz-RG], T_FZIND.[DV-1], T_FZIND.[DV-L], T_Fotos_1.[Foto-1], T_Fotos_1.[Ort-Datum-1], T_Fotos_1.[Fotbem-1], T_Fotos_2.[Foto-2], T_Fotos_2.[Ort-Datum-2], T_Fotos_2.[Fotbem-2], T_Fotos_3.[Foto-3], T_Fotos_3.[Ort-Datum-3], T_Fotos_3.[Fotbem-3], T_Fotos_4.[Foto-4], T_Fotos_4.[Ort-Datum-4], T_Fotos_4.[Fotbem-4], T_Fotos_1.[IDF_Fotograf-1], T_Fotos_2.[IDF_Fotograf-2], T_Fotos_3.[IDF_Fotograf-3], T_Fotos_4.[IDF_Fotograf-4], T_FZIND.[Bem ABZ1], T_FZIND.[Bem ABZ2], T_FZIND.[Bem ABZ3], T_FZIND.[BEM 4], T_FZIND.[Sichtung aktuell], T_FZIND.[Sichtung Notizen], T_FZIND.[Sichtung aktuell offen], T_FZIND.[Prio-Status geändert], T_Fotos_11.Foto_11, T_Fotos_11.IDF_Fotograf_11, T_Fotos_11.Ort_Datum_11, T_Fotos_11.Fotbem_11, T_Fotos_12.Foto_12, T_Fotos_12.IDF_Fotograf_12, T_Fotos_12.Ort_Datum_12, T_Fotos_12.Fotbem_12, T_Fotos_13.Foto_13, T_Fotos_13.IDF_Fotograf_13, T_Fotos_13.Ort_Datum_13, T_Fotos_13.Fotbem_13, T_Fotos_14.Foto_14, T_Fotos_14.IDF_Fotograf_14, T_Fotos_14.Ort_Datum_14, T_Fotos_14.Fotbem_14
FROM T_Eigentümer INNER JOIN (((((T_FZIND LEFT JOIN T_Fotos_11 ON T_FZIND.Index = T_Fotos_11.Index) LEFT JOIN T_Fotos_12 ON T_FZIND.Index = T_Fotos_12.Index) LEFT JOIN T_Fotos_13 ON T_FZIND.Index = T_Fotos_13.Index) LEFT JOIN T_Fotos_14 ON T_FZIND.Index = T_Fotos_14.Index) INNER JOIN ((((T_PW LEFT JOIN T_Fotos_1 ON T_PW.Index = T_Fotos_1.Index) LEFT JOIN T_Fotos_2 ON T_PW.Index = T_Fotos_2.Index) LEFT JOIN T_Fotos_3 ON T_PW.Index = T_Fotos_3.Index) LEFT JOIN T_Fotos_4 ON T_PW.Index = T_Fotos_4.Index) ON T_FZIND.Index = T_PW.Index) ON T_Eigentümer.ID_Eigentümer = T_FZIND.IDF_Eigentümer
ORDER BY T_FZIND.[FZ-NR];

Dies zeigt das normale, ungefilterte Formular an, geht auch zügig.

Nun habe ich ja im Kopfbereich des Formulars drei Textfelder und drei Kombifelder zur Daten-Filterung eingefügt, die dann per Makro mit dem Befehl "AnwendenFilter" gefiltert werden. Der SQL-Abfragecode für die Filterung sieht - mit Deiner Unterstützung - nun wie folgt aus:

SELECT IIf(Not IsNull([Formulare]![frm_PW]![Suche_ST]),[ST],"") AS ST_Ausw, IIf(Not IsNull([Formulare]![frm_PW]![Suche_UC]),[UC],"") AS UC_Ausw, IIf(Not IsNull([Formulare]![frm_PW]![Suche_RC]),[RCD],"") AS RC_Ausw, IIf(Not IsNull([Formulare]![frm_PW]![Suche_TYP]),[TYP],"") AS TYP_Ausw, IIf(Not IsNull([Formulare]![frm_PW]![Suche_NR]),[FZ-NR],"") AS NR_Ausw1, IIf(Not IsNull([Formulare]![frm_PW]![Suche_NR]),[Tabbem],"") AS NR_Ausw2, IIf(Not IsNull([Formulare]![frm_PW]![Suche_VKM]),[Kürzel],"") AS VKM_Ausw
FROM T_Eigentümer INNER JOIN T_FZIND ON T_Eigentümer.ID_Eigentümer = T_FZIND.IDF_Eigentümer
WHERE (((IIf(Not IsNull([Formulare]![frm_PW]![Suche_ST]),[ST],"")) Like "*" & [Formulare]![frm_PW]![Suche_ST] & "*") AND ((IIf(Not IsNull([Formulare]![frm_PW]![Suche_UC]),[UC],"")) Like "*" & [Formulare]![frm_PW]![Suche_UC] & "*") AND ((IIf(Not IsNull([Formulare]![frm_PW]![Suche_RC]),[RCD],"")) Like "*" & [Formulare]![frm_PW]![Suche_RC] & "*") AND ((IIf(Not IsNull([Formulare]![frm_PW]![Suche_TYP]),[TYP],"")) Like "*" & [Formulare]![frm_PW]![Suche_TYP] & "*") AND ((IIf(Not IsNull([Formulare]![frm_PW]![Suche_NR]),[FZ-NR],"")) Like "*" & [Formulare]![frm_PW]![Suche_NR] & "*") AND ((IIf(Not IsNull([Formulare]![frm_PW]![Suche_VKM]),[Kürzel],"")) Like "*" & [Formulare]![frm_PW]![Suche_VKM] & "*")) OR (((IIf(Not IsNull([Formulare]![frm_PW]![Suche_ST]),[ST],"")) Like "*" & [Formulare]![frm_PW]![Suche_ST] & "*") AND ((IIf(Not IsNull([Formulare]![frm_PW]![Suche_UC]),[UC],"")) Like "*" & [Formulare]![frm_PW]![Suche_UC] & "*") AND ((IIf(Not IsNull([Formulare]![frm_PW]![Suche_RC]),[RCD],"")) Like "*" & [Formulare]![frm_PW]![Suche_RC] & "*") AND ((IIf(Not IsNull([Formulare]![frm_PW]![Suche_TYP]),[TYP],"")) Like "*" & [Formulare]![frm_PW]![Suche_TYP] & "*") AND ((IIf(Not IsNull([Formulare]![frm_PW]![Suche_NR]),[Tabbem],"")) Like "*" & [Formulare]![frm_PW]![Suche_NR] & "*") AND ((IIf(Not IsNull([Formulare]![frm_PW]![Suche_VKM]),[Kürzel],"")) Like "*" & [Formulare]![frm_PW]![Suche_VKM] & "*"));

Wenn ich diese Abfrage testweise DIREKT ausführe, dann geht das auch schnell. Wenn das aber im oben aufgeführten Formular per Makro als "AnwendenFilter" ausgeführt wird, dauert das bis zu 40 Sekunden (allerdings nicht auf dem allerschnellsten Rechner).

Besten Dank schon mal vorab für's anschauen meiner SQL-Bandwürmer ....

Weiterhin erholsame Tage!
Ralph
Top of the page Bottom of the page