Avatar billede cnr Nybegynder
27. marts 2007 - 14:35 Der er 18 kommentarer og
1 løsning

brug af IIf i criteria

Jeg har en tabel med et felt der hedder [modtaget]. Feltet kan enten indeholde en dato, eller være blank.

Til søgning i tabellen har jeg en form og en subform. I formen kan man angive søgekriterier, hvorefter alle de poster i tabellen der overholder disse kommer op i subformen.

Hvis der ikke er angivet nogen søgeværdi for [modtaget] i formen, ønsker jeg at subformen skal returnere alle poster. Det mislykkes imidlertid, da jeg kun får returneret de poster der er angivet en dato på, poster hvor [modtaget] er blank kommer ikke op.

Formen hedder soeg og min criteria er:

IIf(IsNull([forms]![soeg]![modtaget]),UDTRYK DER TILLADER ALLE POSTER,([forms]![soeg]![modtaget]))

Dvs. HVIS [modtaget] i formen er tom SÅ vis alle poster, HVIS [modtaget] ikke tom SÅ vis poster der svarer til [modtaget] i formen

Hvilket udtryk vil tvinge access til at vise alle poster, også de blanke?
Avatar billede mugs Novice
27. marts 2007 - 19:37 #1
I stedet for at indsætte kriterier, kan du filtrere således:

If isNull(modtaget) then
me.filteron = false
else:
me.filter = "modtaget = #" & me!modtaget & "#"
me.filteron = true
Avatar billede cnr Nybegynder
28. marts 2007 - 08:51 #2
HVor indsætter jeg den kode henne?
Avatar billede mugs Novice
28. marts 2007 - 14:06 #3
Prøv med en kommandoknap.
Avatar billede cnr Nybegynder
28. marts 2007 - 16:13 #4
JEg får fejl på brugen af me. (ugyldig keyword)
Avatar billede mugs Novice
28. marts 2007 - 16:36 #5
På hvilken linie?
Avatar billede mugs Novice
28. marts 2007 - 16:37 #6
Hvis feltet "modtaget" ligger i underformularen, skal du først referere til denne:

me.SubformObject.filterOn = xxx
Avatar billede cnr Nybegynder
30. marts 2007 - 13:58 #7
Hej igen, havde en dag væk fra kontoret igår :)

Feltet er i hovedformen, jeg har sat en knap i hovedformen, der kalder en macro der vha runcode kalder en public funktion i et modul med den kode du sendte mig.

En hver brug af me. i koden giver fejl
Avatar billede mugs Novice
30. marts 2007 - 14:18 #8
Hvis Me. ligger i modulet SKAL der komme fejl, idet Me. refererer til det aktuelle objekt.

Prøv at indsætte koden i en knap på formularen og se, om ikke den fungerer der.
Avatar billede cnr Nybegynder
30. marts 2007 - 15:23 #9
Jeg får ikke fejlmeddelse længere, men der sker ikke nogen filtrering. jeg tror det har noget med form/subform at gøre

feltet med søgekriteriet ligge i hovedformen, men søgningen sker i subformen. søgningen sker ved at et modul skifter fokus til subformen, hvorefter der sker en requery. subformen er bundet op på en query med de relevante felter.

hvis jeg ikke misforstår din kode helt, så bindes filteret til hovedformen.
Avatar billede cnr Nybegynder
30. marts 2007 - 15:57 #10
Jeg har prøvet at sætte fokus til subformen med en forms!soeg![soeg subform].SetFokus uden effekt, kan det være min filterangivelse der er forkert?

min syntax  er (f.eks.)

me.filter = "[navn på queryfelt] = null"

eller

me.filter = "[navn på queryfelt] >= '0'"

er det korrekt?
Avatar billede mugs Novice
30. marts 2007 - 16:09 #11
Denne kode er hentet fra en anden database hvor jeg filtrerer en underformular efter et felt i mainform. Men detr sker ikke ved et modul. Men prøv at lege lidt med den:

Private Sub Kommandoknap14_Click()
Me.subform.SetFocus
If Me.FilterOn = False Then
DoCmd.ApplyFilter "mitfilter", "kundeemne Like [Navn ?]"
Me.Kommandoknap14.Caption = "Fjern filter"
Else:
Me.FilterOn = False
Me.Kommandoknap14.Caption = "Indsæt filter"
End If
End Sub
Avatar billede cnr Nybegynder
30. marts 2007 - 16:10 #12
Det bliver vidst efter weekenden :)

Foreløbig tak for hjælpen
Avatar billede mugs Novice
30. marts 2007 - 16:22 #13
Selv tak og god weekend :o)
Avatar billede cnr Nybegynder
02. april 2007 - 09:36 #14
Det var så den weekend :(

Når jeg bruger applyfilter får jeg en fejlmeddelse der siger at formen ikke er bundet op på en tabel eller query. Det kan vel ikke passe, jeg har udvalgt felter fra en ouery i datasource, og når jeg ikke bruger applyfilter kommer resultatet fra query'en fint nok op!
Avatar billede cnr Nybegynder
02. april 2007 - 12:28 #15
Jeg har prøvet at lege lidt med det.

Jeg kan godt angive et filter, hvis jeg går ind og gør det manuelt i selve formen, og jeg kan også godt slå filteret til og fra manuelt.

Men jeg er ikke istand til at slå filteret til og fra i VBA. selv om jeg køre den her kode:

Me.[soeg subform].SetFocus
Me.FilterOn = False

i en event procedure så bliver filteret ved med at være til, uden at jeg får nogen fejlmeddelse eller noget
Avatar billede cnr Nybegynder
02. april 2007 - 13:32 #16
og nye sjove oplevelser:

Hvis jeg bruger VBA til at slå filteret fra, så er filteret stadigvæk til, men filter knappen i access ændre hjælpetekst til "apply filter". Så access registrere at filteret slåes til og fra i VBA, men implementere det ikke i formen.
Avatar billede mugs Novice
03. april 2007 - 05:50 #17
Hvis du har et felt på din mainform (her kundeemne), kan du filtrere underformularen efter dette felt således, ellers har jeg ikke så mange ideer (har heller ikke s¨meget tid i disse dage):

Private Sub Kommandoknap31_Click()
Me!subform.Form.filter = "kundeemne =  '" & kundeemne & "'"
Me!subform.Form.FilterOn = True
End Sub
Avatar billede cnr Nybegynder
03. april 2007 - 08:49 #18
YES, det var lige den formulering der skulle til :))

Du skal have tak for hjælpen, især på det tidspunkt!

CNR
Avatar billede mugs Novice
03. april 2007 - 10:07 #19
Tak for point :o)
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