2010-10-14 19 views
1

J'essaie de filtrer les enregistrements affichés sur un sous-formulaire en fonction de ce qui est tapé dans une zone de texte sur le sous-formulaire. Le sous-formulaire s'appelle Utilisateurs et se trouve sur le formulaire Groupe. Dans le sous-formulaire Utilisateurs, il y a une zone de texte appelée txtFilter. Si je tape "W" dans txtFilter, je veux montrer seulement les enregistrements dans lesquels le nom de famille ou le nom d'utilisateur de l'utilisateur commence par un "W". Comme je continue à taper W ... A ... L je veux seulement les utilisateurs dont le nom de famille ou le nom d'utilisateur commencent par "Wal" pour montrer. J'ai une idée vague que je dois utiliser la propriété recordset ou serverFilter du sous-formulaire pour faire cela, mais je ne sais vraiment pas quoi faire. Aidez-moi, s'il vous plaît!Filtre sous-formulaire basé sur ce qui est tapé dans une zone de texte sur le sous-formulaire

Répondre

1
Private Sub txtFilter_Change() 

    If Nz(Me.txtFilter.Text, "") = "" Then 
     Me.FilterOn = False 
     Me.txtFilter.SetFocus 
     Exit Sub 
    End If 
    Me.Filter = "lastName like '" + Me.txtFilter.Text + "%' or userName like '" & _ 
     Me.txtFilter.Text + "%'" 
    Me.FilterOn = True 
    Me.txtFilter.SetFocus 
    Me.txtFilter.SelStart = Len(Nz(Me.txtFilter.Text, "")) + 1 


End Sub 
0

mise à jour rapide de @dmr réponse pour l'accès 2013:

  • Change « % » à « * » - L'accès utilise l'astérisque pour wildcard. Peut-être vouloir l'ajouter avant le texte, en plus de après.
  • Vous devez activer AllowAdditions dans les propriétés du formulaire, sinon des erreurs de mise au point se produisent lorsque le filtre renvoie zéro appel.
  • Ce code supprime les espaces, ce qui rend impossible l'ajout d'espaces à votre recherche (puisque vous ne pouvez pas taper 'deux mots' sans d'abord taper 'deux').

réponse modifiée:

Private Sub txtFilter_Change() 

    Dim search_text As String 
    search_text = Me.txtFilter 

    If Nz(Me.txtFilter.Text, "") = "" Then 
     Me.FilterOn = False 
     Me.txtFilter.SetFocus 
     Exit Sub 
    End If 
    Me.Filter = "lastName like '*" + Me.txtFilter.Text + "*' or userName like '*" & _ 
     Me.txtFilter.Text + "*'" 
    Me.FilterOn = True 
    Me.txtFilter.SetFocus 
    Me.txtFilter.Value = search_text 
    Me.txtFilter.SelStart = Len(Nz(Me.txtFilter.Text, "")) + 1 


End Sub