Filteren met combobox

Status
Niet open voor verdere reacties.

maomanna

Gebruiker
Lid geworden
20 feb 2014
Berichten
234
Hallo allen,

Heb het helaas niet met de zoekfunctie kunnen vinden dus vandaar mijn vraag.

Ik wil graag filteren met een of meer comboboxxen. Nu heb ik er een aantal hier gevonden, maar kreeg die niet omgebouwd (zijn ook te ingewikkeld voor mn doel).

Op youtube heb ik het filmpje gevolgd, maar slaag er niet in om de waarde "vast" te houden.

Ik kan filteren, maar moet de waarde als nog intypen.

Code:
Private Sub cbostatus_AfterUpdate()
Dim myCustomer As String
myCustomer = "Select * From vacatures Where ([status] = " & Me.cbostatus & ")"
Me.sfrmqvacatures.Form.RecordSource = myCustomer
Me.sfrmqvacatures.Form.Requery
End Sub

en het voorbeeld:
Bekijk bijlage data1.zip
 
Waarom gebruik je in hemelsnaam een subformulier voor dit formulier? Je kunt alles prima op één formulier zetten en de keuzelijst gebruiken om het filter van het formulier in te stellen. Wat je nu doet (de complete recordbron aanpassen) is een mug doodslaan met een peloton overrijpe militairen :). Hou het simpel...
 
haha leuke verwoording :)

uiteindelijk moet het worden wat in dit filmpje staat.

Of ik moet via het betreffende record een formulier kunnen openen om hem te bewerken.
 
En om te laten zien hoe simpel dat werkt, heb ik je subformulier 'omgebouwd' naar een zelfstandig doorlopend formulier met de keuzelijst als filter. Overigens is de layout nog steeds van een enkelvoudig formulier, dus het ziet er niet geweldig uit, maar het gaat om de werking. In mijn databases zul je overigens nooit formulieren zien in gegevensblad weergave; ik gruw daarvan :).
 
denk dat de bijlage is blijven hangen. :o

Octo, je zegt dat je nooit gegevensbladweergave maakt. Hoe doe je het dan wel?
 
Laatst bewerkt:
Nieuwe poging... het was al laat zullen we maar zeggen :)
Ik gebruik ofwel enkelvoudige formulieren, ofwel doorlopende formulieren. Die kun je, als je echt gehecht bent aan de Excel look, ook opmaken als gegevensblad weergave, maar je hebt wel alle functionaliteit van een normaal formulier.
 

Bijlagen

Thanks! het was inderdaad wat laat :)

Dat laatste is wel het handigst. snel een overzicht, zoals gegevensblad weergave.
ik weet niet of het mogelijk is om dan op een record te klikken en zodat een nieuw formulier geopend wordt.

Een tweede of derde combobox toevoegen met dezelfde code werkt niet. filter op filter of alleen de tweede combobox werkt niet.
wssn denk ik er wat te makkelijk over.
 
Laatst bewerkt:
Een tweede of derde combobox toevoegen met dezelfde code werkt niet. filter op filter of alleen de tweede combobox werkt niet.
Zou geen enkel probleem mogen zijn; ik gebruik dat soort technieken (bij wijze van spreken) dagelijks. En altijd werkend :D. Tijd voor een voorbeeldje?
 
chips!
heb het multifilteren deels opgelost. Zat hem in de juiste rijbron.
hij filtert nu per stuk (geen filter op filter)

Voorbeeldje:
Bekijk bijlage data.zip

Ik weet niet of het moeilijk is om het om te toveren tot gegevensblad?
 
Wat is toch die fascinatie voor gegevensblad weergave? Ik snap dat niet.... Je koopt een auto en de verkoper zegt tegen je: auto A is alleen automaat en is alleen in grijs leverbaar, met Auto B kun je schakelen en kun je in alle kleuren krijgen maar die kost €5000 meer. En dan zeg je tegen de verkoper: ik wil graag auto A met 6 versnellingen en in rood. Zoiets..... Gegevensweergave kan nu eenmaal minder als een gewoon formulier. Dan moet je daar ook niet meer van verlangen. En het is lelijk...
Steek wat moeite in een gewoon doorlopend formulier (kun je ook prima met de wizard maken trouwens) en maak die verder op zoals je 'm hebben wilt. Heb je veel meer aan.
Overigens klopt er weinig van je nummerfunctie in deze db, dus die heb ik maar (ging je vraag verder niet over ;) ) maar aangepast.
 

Bijlagen

het was weer laat. ik had het verkeerde bestand geüpload.

dus hierbij opnieuw.

Bekijk bijlage juiste.zip

het gegevensblad is idd minder fraai, maar wel compacter en een beter overzicht, thans vind ik.
 
het gegevensblad is idd minder fraai, maar wel compacter en een beter overzicht, thans vind ik.
Dat is een beetje onzin; een doorlopend formulier is net zo compact (misschien zelfs nog wel compacter) en zeker overzichtelijker te maken dan een gegevensblad weergave. Met daarnaast dus eerder aangehaalde voordelen. Maar ik kijk zo wel even naar je nieuwe voorbeeldje :).
 
Ik ben weer wat verder.

In het formulier Overzicht Vacatures werkt de filter in principe goed, alleen werkt het niet als ik meer dingen tegelijk filter.
Kort gezegd: Als ik Gesloten selecteer en daarna een divisie, dan wil ik alleen dat dus zien. Nu overruled de andere filter dus.
Geen idee hoe dat werkt.

Bekijk bijlage comboboxfilter.zip

Het tweede ding, doe we hierna wel.
 
Tuurlijk, maar ik heb ook niet altijd tijd :).
 
Ok, hier komt ie...

Je moet alle 3 de keuzelijsten tegelijk beoordelen. Dat doe je nu niet. Omdat elke keuzelijst in essentie dezelfde code krijgt, kun je daar beter een functie van maken, dat scheelt programmeren. Dan krijg je zoiets:

Code:
Private Sub cbostatus_Click()
    Filteren
End Sub

Code:
Private Sub cbodiv_Click()
    Filteren
End Sub

Code:
Private Sub cbobehandel_Click()
    Filteren
End Sub

Code:
Function Filteren()
Dim sWhere As String

    If Me.cbostatus.Value & "" <> "" Then
            sWhere = "[Status]=""" & Me.cbostatus & """"
    End If
    If Me.cbodiv.Value & "" <> "" Then
        If Not sWhere & "" = "" Then sWhere = sWhere & " AND "
        sWhere = sWhere & "[Divisie]=""" & Me.cbodiv & """"
    End If
    If Me.cbobehandel.Value & "" <> "" Then
        If Not sWhere & "" = "" Then sWhere = sWhere & " AND "
        sWhere = sWhere & "[Behandelaar]=""" & Me.cbobehandel & """"
    End If
    
    If Not sWhere & "" = "" Then
        Me.Filter = sWhere
        Me.FilterOn = True
    Else
        Me.Filter = ""
        Me.FilterOn = False
    End If

End Function
 
Super!
Ik heb de functie namen aangepast, maar op de een of andere manier werkt hij niet.

De velden waarop ik dit toepas, hebben allemaal -1 of 0.
Div -1 of 0
Status -1 of 0.

Krijg foutmelding 3464:
Gegevenstypen komen niet overeen in criteriumexpressie.

Dan loopt hij vast op
Code:
If Not sWhere & "" = "" Then
        Me.Filter = sWhere
        Me.FilterOn = True
    Else
        Me.Filter = ""
        Me.FilterOn = False
    End If
 
Oplossing gevonden.
Het aantal " was teveel voor numerieken.

Bovenstaande functie werkt overigens prima voor tekst.

Code:
Function Filteren()
Dim sWhere As String

    If Me.cbocheck.Value & "" <> "" Then
    sWhere = "[Checklist]=" & Me.cbocheck & ""
    End If
    If Me.cboscreen.Value & "" <> "" Then
        If Not sWhere & "" = "" Then sWhere = sWhere & " AND "
        sWhere = sWhere & "[Screening]=" & Me.cboscreen & ""
    End If
    If Me.cbobig.Value & "" <> "" Then
        If Not sWhere & "" = "" Then sWhere = sWhere & " AND "
        sWhere = sWhere & "[BIG]=" & Me.cbobig & ""
    End If
    
    If Not sWhere & "" = "" Then
        Me.Filter = sWhere
        Me.FilterOn = True
    Else
        Me.Filter = ""
        Me.FilterOn = False
    End If
 
Laatst bewerkt:
Graag wil ik nog een filter toevoegen op datum, ook als combobox.
Nu heb ik een hele rits aan data erin staan, maar wil deze bundelen in
<= 01-01-2012 en >=31-12-2011
 
Je kunt een query maken die je als bron voor je keuzelijst gebruikt. Daar zet je dan het filter in.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan