26. januar 2009 - 14:29Der er
7 kommentarer og 1 løsning
Kriterie i forespørgsel
Hej,
Jeg har en forespørgsel som baserer sig på en række kriterier fra form felter.
Jeg har dog problemer med, at få forespørgslen til at vise alle poster hvis der ikke er indtastet nogle kriterier.
Det jeg har prøvet med indtil videre er
Between IIf([Forms]![KundeVareStatistik_Parametre]![ComboVareNrStart] Is Not Null;[Forms]![KundeVareStatistik_Parametre]![ComboVareNrStart];Null) And IIf([Forms]![KundeVareStatistik_Parametre]![ComboVareNrSlut] Is Not Null;[Forms]![KundeVareStatistik_Parametre]![ComboVareNrSlut];Null)
Nogen der har forslag til hvordan dette kan løses?
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Opret to nye felter i din forespørgsel med følgende indhold: - Start: [Forms]![KundeVareStatistik_Parametre]![ComboVareNrStart] - Slut: [Forms]![KundeVareStatistik_Parametre]![ComboVareNrSlut]
Nu kan du styre intervallerne med 4 kriterielinier:
1. kriterielinie: Under [ComboVareNrStart]: Is Null. Under [ComboVareNrSlut]: Is Null. Denne linie udløses, hvis de begge er Null (altså ingen begrænsning af VareNr).
2. kriterielinie: Under [ComboVareNrStart]: Is Null. Under [VareNr]: <=[ComboVareNrSlut]
3. kriterielinie: Under [ComboVareNrSlut]: Is Null. Under [VareNr]: >=[ComboVareNrStart]
4. kriterielinie: Under [VareNr]: Between [ComboVareNrStart] And [ComboVareNrSlut] (nu virker begrænsningen, da ingen af parametrene er Null)
Hm. 4 kategorier giver vel i princippet 16 kombinationer, så ja, du skal nok ind på et andet spor. En mulighed er så at bygge forespørgslen i VBA, altså ved f.eks. et klik på en knap danne en forespørgsel ud fra de felter, som er udfyldt.
Det vil være noget i stil med (ikke testet):
Const Qnavn = "DinForespørgsel" Dim strSQL As String Dim Qdf As QueryDef
strSQL = "SELECT DinTabel.* FROM DinTabel WHERE True" If Not IsNull(Me.ComboVareNrStart) Then strSQL = strSQL & " AND VareNr>=" & Me.ComboVareNrStart If Not IsNull(Me.ComboVareNrSlut) Then strSQL = strSQL & " AND VareNr<=" & Me.ComboVareNrSlut ... osv
' Slet Query, hvis den findes On Error Resume Next CurrentDb.QueryDefs.Delete Qnavn On Error GoTo 0
' Opret ny Set Qdf = CurrentDb.CreateQueryDef(Qnavn) Qdf.SQL = strSQL Qdf.Close Set Qdf = Nothing
og så køre videre med denne Forespørgsel.
BEMÆRK at denne konstruktion forudsætter OG mellem alle parametre. Hvis du skal have ELLER blandet ind, skal du nok til at tænke lidt mere over tingene.
Status er, at jeg igår ville prøve din sidst nævnte løsning, men computeren på arbejdet blev ved med at gå ned hvergang jeg prøvede at besøge exp.dk, så jeg satser på, at det virker her en af de kommende dage når IT-afdelingen har fået kigget på den :-)
Jeg har idag leget med det, og det gik fint, så lukker nu, men har du måske et råd til til hvordan dit første forslag kan udvides til, at dække de 3 ekstra kriterier?
Derefter: Det er lidt vanskeligt at beskrive konstruktionen sådan her i en tekstboks; men princippet er at du hele tiden fylder parametre på i begge udgaver (Null og Not Null). Så snart du begynder at fylde data ind i gitteret, burde mønstret begynde at vise sig.
Du skal altså kopiere de 4 linier, så du har 8. Så opretter du et nyt felt til 3. paramater - og under det lægger du i de første 4 linier "Is Null" og i de 4 næste ingenting. Under VareNr korrigerer du så formlen, så den passer til kombinationerne af de 3 parametre.
Når den model er på plads, kopierer du så de 8, så du har 16 - og så gentager du øvelsen med 4. parameter.
Det er en herlig mental udfordring, som sikkert balancerer på en tynd kant mellem følelsen af personlig triumf og begyndende hjernehindebetændelse ;o)
God fornøjelse.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.