Groepsvak filteren met vba

Status
Niet open voor verdere reacties.

RonaldRoenhorst

Gebruiker
Lid geworden
25 dec 2008
Berichten
188
Onderstaand vanuit het groepsvak een filter, deze wilde ik graag uitbreiden zodat ik met 1 klik een aantal ArticleID kan zien omdat ik nu maar 1 ArticleID kan filteren.


Code:
Private Sub Kader78_AfterUpdate()
    If Kader78 = 1 Then
        Me.Filter = "ArticleID = 10229"
     
        Me.FilterOn = True
    Else
        Me.FilterOn = False
    End If
        
        
End Sub
 
Laatst bewerkt door een moderator:
Wat wil je precies? Want ik snap het toch niet helemaal.... Als je een groepsvak gebruikt komt daar één waarde uit; als je meerdere opties tegelijk wilt gebruiken, zou ik dat niet via een groepsvak doen, maar de selectievakjes los op het formulier zetten.
 
Maar hoe wil je die dan selecteren? Want dit is niet wat je bedoelt?
Code:
sFilter="ArticleID = 10229 Or ArticleID = 1031"
Me.Filter = sFilter
 
Michel,

Dit is bijna wat ik wil maar nu doe de functie maar 1 keer daarna bij het opstarten en geeft ze gefilterd weer daarna niet meer.


Dit is nu de code:
Code:
Private Sub Kader78_AfterUpdate()
     
    If Kader78 = 2 Then
      
       sFilter = "ArticleID = 10229 Or ArticleID = 10232 Or ArticleID = 10048"
        Me.Filter = sFilter
     
         Else
        Me.FilterOn = False
    End If
        
End Sub
 
Laatst bewerkt door een moderator:
Als je wilt dat de code bij elk record werkt, zoals ik nu vermoed, kun je de code ook bij de <Bij Aanwijzen> gebeurtenis zetten. Dan wordt de code bij elk record opnieuw aangeroepen.
 
Michel,

Nu heb ik het volgende maar nu filtert hij alleen de laatste (90000)
Ik denk dat het fout gaat bij het nesten van de IF.


Code:
Private Sub Kader78_AfterUpdate()
     
    If Kader78 = 2 Then
    
       Me.Filter = "ArticleID = 10229 Or ArticleID = 10231 Or ArticleID = 10048"
        Me.FilterOn = True
      
        End If
        
      If Kader78 = 3 Then
        Me.Filter = "ArticleID = 90000 "
            Me.FilterOn = True
         Else
        Me.FilterOn = False
    End If
        
End Sub
 
Laatst bewerkt door een moderator:
Je doet twee keer een check, waarbij de laatste check dus leading is. En die luidt, dat als de gekozen waarde niet 3 is, het filter wordt uitgezet. Dus de instelling die je bij waarde 2 hebt gedaan, die wordt vervolgens geneutraliseerd. Je kunt het dus beter zo oplossen:

Code:
If Kader78 = 2 Then
    Me.Filter = "ArticleID = 10229 Or ArticleID = 10231 Or ArticleID = 10048"
    Me.FilterOn = True
ElseIf Kader78 = 3 Then
    Me.Filter = "ArticleID = 90000 "
    Me.FilterOn = True
Else
    Me.FilterOn = False
End If
 
Michel,

Helemaal top :thumb: :d , dit is het.
Nog wel een vraagje, klopt het dat ik 7 if voorwaarden kan maken ?
 
Hoe kom je daar bij? Ik weet dat je in een query max 7 IIF functies kunt nesten, maar daar doel je waarschijnlijk niet op?
Overigens zou ik, als je er heel veel nodig hebt, de zaak ombouwen tot een Select Case:

Code:
Me.FilterOn = True
Select Case Kader78
    Case 2 
        Me.Filter = "ArticleID = 10229 Or ArticleID = 10231 Or ArticleID = 10048"
    Case 3 
        Me.Filter = "ArticleID = 90000 "
    Case 4
        Me.Filter = "ArticleID = 91000 "
    Case Else
        Me.FilterOn = False
End Select
 
Michel dit werkt helemaal top !!
Wanneer ik alles selecteer zou ik dan ook een uitzondering kunnen maken zoals

Code:
Private Sub Kader33_AfterUpdate()
Me.FilterOn = True
Select Case Kader33
    Case 1
        Me.Filter = [B]Not [/B]"ArticleID = 90000"
    Case 2
        Me.Filter = "ArticleID = 10229 Or ArticleID = 10231 Or ArticleID = 10048"
    Case 3
        Me.Filter = "ArticleID = 10217 Or ArticleID = 10227 "
    Case 4
        Me.Filter = "ArticleID = 10048 "
    Case 5
        Me.Filter = "ArticleID = 10229 "
    Case 6
        Me.Filter = "ArticleID = 10231 "
    Case 7
        Me.Filter = "ArticleID = 10261 "
    Case 8
        Me.Filter = "ArticleID = 10217 "
    Case 9
        Me.Filter = "ArticleID = 10227 "
    Case 10
        Me.Filter = "ArticleID = 10232 "
    Case 11
        Me.Filter = "ArticleID = 10297 "
    Case 12
        Me.Filter = "ArticleID = 10059 Or ArticleID = 10077 "
    Case 13
        Me.Filter = "ArticleID = 10230 "
    Case 14
        Me.Filter = "ArticleID = 10237 Or ArticleID = 10238 Or ArticleID = 10244 "
    Case Else
      
    
        Me.FilterOn = False
End Select
End Sub
 
Laatst bewerkt door een moderator:
Je code wordt een stuk overzichtelijker als je 'm in de Codetag plaatst (even tussendoortje ;) )
De syntax die je aangeeft zal denk ik niet werken, ook al omdat hij geen onderdeel is van de Filterstring.
Het zou zo moeten zijn, denk ik:
Code:
Case 1
Me.Filter = "ArticleID <> 90000"
 
Michel,

Het lukt mij niet om te filteren op text.

Code:
Private Sub Kader86_AfterUpdate()
Me.FilterOn = True
Select Case Kader86
    Case 2
        Me.Filter = "PlantNumber = P01"
    Case 3
        Me.Filter = "PlantNumber = P02"
   
End Select
End Sub
 
Laatst bewerkt door een moderator:
Ik denk dat-ie er zo uit moet zien:
Code:
Me.FilterOn = True
Select Case Kader86
    Case 2
        Me.Filter = "PlantNumber = 'P01'"
    Case 3
        Me.Filter = "PlantNumber = 'P02'"
End Select
 
Dank je voor de Supersnelle hulp, zelf was ik niet verder gekomen dan "P01"

Is het ook mogelijk om een meervoudige selectie te maken binnen een groepsvak ?
 
Oh sorry dat ik hier niet voldoe aan de voorwaarden.. en hoop dat het zo moet.

Code:
Private Sub Kader209_Click()
Me.FilterOn = True
Select Case Kader209
    Case 1
        Me.Filter = "PlantNumber = 'P01' "
    Case 2
        Me.Filter = "PlantNumber = 'P02' "
   
        
    Case Else
        Me.FilterOn = False
End Select

End Sub
 
Om nog even op de meervoudige selectie terug te komen: volgens mij kan dat niet. Je zult dan met losse checkboxen moeten werken, waarbij je dan op True of False checkt. Of met een keuzelijst waarin je meervoudige selecties kunt maken, kan natuurlijk ook nog, en zal vermoedelijk minder ruimte inpikken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan