Avatar billede mostcrazy Nybegynder
26. januar 2009 - 14:29 Der 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?
Avatar billede fdata Forsker
26. januar 2009 - 23:36 #1
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)
Avatar billede mostcrazy Nybegynder
27. januar 2009 - 11:39 #2
Tak for det. Jeg har ikke mulighed for, at afprøve forslaget før på fredag, så jeg vender lige tilbage når det er afprøvet :-)
Avatar billede mostcrazy Nybegynder
30. januar 2009 - 09:23 #3
Hej igen,

Jeg har lige kigget på det, og det viser sig, at jeg skal lave denne manøvre for 4 katetorier - altså vil jeg ende ud med 8 ekstra felter.

Der findes ikke en mere kompakt metode?
Avatar billede fdata Forsker
30. januar 2009 - 14:18 #4
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.
Avatar billede fdata Forsker
04. februar 2009 - 10:29 #5
Status?
Avatar billede mostcrazy Nybegynder
04. februar 2009 - 10:51 #6
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 :-)
Avatar billede mostcrazy Nybegynder
06. februar 2009 - 15:14 #7
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?
Avatar billede fdata Forsker
06. februar 2009 - 19:22 #8
Først tak for point.

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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester