Keuzelijst - formulier opnieuw filteren

  • Onderwerp starter Onderwerp starter jhdw
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

jhdw

Gebruiker
Lid geworden
15 dec 2012
Berichten
166
Goedemiddag,

Ik ben weer eens aan het stoeien met een paar keuzelijsten op een formulier - Access 2010. In de bijlage vind je een uitgeklede database met daarin het formulier waar het "probleem" in zit (de relaties staan wel in mijn backend db). Onder het kopje 'ontvangen in' staan 2 keuzelijsten, waarvan er na openen van het formulier in eerste instantie slechts 1 zichtbaar is. Als je daar eerst bijv. 2012 kiest, dan wordt alles getoond, tevens wordt de tweede keuzelijst zichtbaar. Hier kun je een kwartaal kiezen - in dit geval alleen 4.

Ga je nu weer terug naar de keuzelijst jaar dan kies je 2013.

Nu worden er geen records getoond - en dat zou ik wel graag willen als het mogelijk is!

Kies je daarna een kwartaal (bijv. 1) dan worden de records die in die periode vallen netjes getoond. Druk je in het veld kwartaal op de delete knop, (de 1 verdwijnt) dan worden wel alle records in 2013 getoond!
Druk op reset om naar de beginsituatie te gaan.
Kies je bijv. 2012, dan wordt alles van 2012 getoond - de focus blijft ook op dit veld.
Als je daarna 2013 kiest, dan wordt wel alles getoond.

Heeft iemand een idee hoe ik dit kan oplossen?

Alvast bedankt.

Gr. Jan
 

Bijlagen

Ik snap niet helemaal waarom je een filter in je query maakt, èn een filter aanzet op het formulier. En in dan ook nog het filter steeds leegmaakt. En de Reset knop die steeds het formulier sluit en opent? Kan ook slimmer.
Ik heb de query criteria verwijderd, want die heb je helemaal niet nodig als je goed op het formulier filtert. En dat doet hij nu.
 

Bijlagen

Laatst bewerkt:
Hallo Michel,

Alweer bedankt voor de snelle reactie.

Zoals je gezien hebt had ik onder het kopje 'berekend in' ook 2 keuzelijsten staan. Die wou ik op dezelfde manier aanpassen zoals jij gedaan hebt bij de eerste 2 keuzelijsten (deze werken inderdaad veel beter als in de versie die ik zelf in elkaar geknutseld had - weer veel geleerd!).
Nu doet zich het vreemde verschijnsel voor dat het bij de 2 keuzelijsten die ik zelf heb aangepast niet werkt.

Na enig onderzoek blijkt dat in query2 de volgende velden andere veldeigenschappen hebben:
Kb_jaar: Format([Factuurdatum];"yyyy")
Kb_kwartaal: Format([Factuurdatum];"q")

Ik zie niet waardoor dit kan, ik heb de queries die ook in query2 staan stuk voor stuk gecontroleerd en geen verschil kunnen ontdekken.
Ik kan bijv. als criterium overal 2012 of 4 ingeven maar bij bovengenoemde velden moet ik "2012" of "4"ingeven.

Daardoor krijg ik de foutmelding 3709 - de zoeksleutel is in geen enkele record gevonden

Private Sub kzl_b_jaar_Click()
If Not Me.kzl_b_jaar Then
fltrJaar = "[Kb_jaar]=" & Me.kzl_b_jaar
Me.Filter = fltrJaar
Me.FilterOn = True (hier strandt het programma dan)
Else
Me.Filter = ""
Me.FilterOn = False
End If
Me.Refresh
End Sub

Heb je enig idee hoe dit opgelost kan worden?

Alvast bedankt.

Gr.
Jan
 
Laten we voorop stellen dat je getallen als een getal moet behandelen, en niet als tekst. Een telefoonnummer is in die zin geen getal, maar een tekst dat bestaat uit een combinatie van cijfers. Je zult nooooit rekenen met telefoonnummers tenslotte. Dus een formule als Kb_jaar: Format([Factuurdatum];"yyyyy") dat van een jaartal een tekst maakt, is eigenlijk een beetje dom. Bovendien is de goede formule veel korter, en dus sneller: Kb_jaar: Year([Factuurdatum]). Dus dat pas ik doorgaans gelijk aan als ik het zie. Bij kwartalen werkt dat jammer genoeg niet, dus die moet je zelf omzetten naar een getal: K-kwartaal: CInt(Format([Ontvangen];"q")).
En dan werkt deze variant prima:
Code:
Private Sub kzl_b_kwartaal_Click()
    sFilter = "[Kb_jaar]=" & Me.kzl_b_jaar & " AND " & "[Kb_kwartaal]=" & Me.kzl_b_kwartaal
    If Not Me.kzl_b_kwartaal = vbNullString Then
        Me.Filter = sFilter
        Me.FilterOn = True
    Else
        Me.Filter = ""
        Me.FilterOn = False
    End If
    Me.Refresh
End Sub
 
Goedemorgen Michel,

Ik zag dat je gisteravond laat nog gereageerd had, bedankt daarvoor.
Vanmorgen heb ik de wijzigingen doorgevoerd. Daarbij liep ik nog tegen een probleem aan als er nog geen factuurdatum ingevuld was.
In de query2 kwam dan de foutmelding "#fout". Na enig speurwerk op de site kwam ik de oplossing tegen:

Kb_kwartaal: IIf(isnull([Factuurdatum]);0;CInt(Format([Factuurdatum];"q"))

Nu werkt alles zoals ik me dat had voorgesteld.

Nogmaals dank voor de goede adviezen, ik heb in ieder geval weer wat bijgeleerd.

Gr.
Jan
 
Ik gebruik liever een SQL variant i.p.v. een VBA code, omdat je dan een net iets snellere variant hebt.
Code:
Kb_kwartaal: IIf([Factuurdatum] Is Null;Null;CInt(Format([Factuurdatum];"q"))
Zo heb ik 'm ook in het voorbeeld, dat ik overigens gisteren niet gepost heb :)
 
Goedemorgen Michel,

Alle goede adviezen zijn welkom.
Ik heb het inmiddels in mijn db aangepast en het werkt nog steeds (je had natuurlijk ook niet anders verwacht!)

Voor mij is de vraag opgelost en wie weet tot een volgende keer.

Gr.
Jan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan