Share via


Méthode DoCmd.ApplyFilter (Access)

La méthode ApplyFilter exécute l’action AppliquerFiltre dans Visual Basic.

Syntaxe

expression. ApplyFilter (FilterName, WhereCondition, ControlName)

expressionune variable représentant un objet DoCmd.

Paramètres

Nom Requis/Facultatif Type de données Description
FilterName Facultatif Variant Expression de type chaîne qui représente le nom valide d'un filtre ou d'une requête dans la base de données active. Lorsque vous utilisez cette méthode pour appliquer un filtre serveur, l’argument FilterName doit être vide.
WhereCondition Facultatif Variant Expression de type chaîne qui est une clause WHERE SQL valide sans le mot WHERE.
Nom_contrôle Facultatif Variant

Remarques

Utilisez l’action AppliquerFiltre pour appliquer un filtre, une requête ou une clause SQL WHERE à une table, un formulaire ou un état afin de restreindre ou de trier les enregistrements dans la table ou les enregistrements de la table ou de la requête sous-jacente du formulaire ou de l’état. Dans le cas d'un état, utilisez cette action uniquement dans une macro spécifiée par la propriété de type événement SurOuverture de cet état.

Utilisez cette action pour appliquer une clause SQL WHERE uniquement lors de l’application d’un filtre serveur. Il n'est pas possible d'appliquer un filtre serveur à une source d'enregistrement d'une procédure stockée.

Remarque

Utilisez l’argument FilterName si vous avez déjà défini un filtre qui fournit les données appropriées. Utilisez l’argument WhereCondition pour entrer directement les critères de restriction. Si vous utilisez les deux arguments, Microsoft Access applique la clause WHERE aux résultats du filtre. Vous devez utiliser au moins un des deux arguments.

Vous pouvez appliquer un filtre ou une requête à un formulaire en mode Formulaire ou Feuille de données.

Le filtre et la condition WHERE que vous appliquez deviennent le paramètre de la propriété Filter du formulaire ou de la propriété ServerFilter de l’état.

Lorsque vous enregistrez une table ou un formulaire, Access enregistre tout filtre actuellement défini dans cet objet, mais n’applique pas automatiquement le filtre à la prochaine ouverture de l’objet (bien qu’il applique automatiquement tout tri que vous avez appliqué à l’objet avant son enregistrement).

Pour appliquer un filtre automatiquement la première fois que vous ouvrez un formulaire, spécifiez une macro contenant l’action ApplyFilter ou une procédure d’événement contenant la méthode ApplyFilter de l’objet DoCmd en tant que paramètre de propriété d’événement OnOpen du formulaire. Vous pouvez également appliquer un filtre à l’aide de l’action OpenForm ou OpenReport ou des méthodes correspondantes. Pour appliquer un filtre automatiquement lorsque vous ouvrez une table pour la première fois, vous pouvez ouvrir la table à l'aide d'une macro contenant l'action OpenTable, suivie immédiatement par l'action ApplyFilter.

Vous devez inclure au moins un des deux arguments de méthode ApplyFilter. Si vous entrez une valeur pour les deux arguments, l'argument WhereCondition est appliqué au filtre.

L'argument WhereCondition peut comporter jusqu'à 32 768 caractères (contrairement à l'argument de l'action Where Condition dans la fenêtre Macro, dont la longueur ne peut excéder 256 caractères).

Exemple

L’exemple suivant utilise la méthode ApplyFilter pour afficher uniquement les enregistrements qui contiennent le nom « King » dans le champ LastName .

DoCmd.ApplyFilter , "LastName = 'King'"

L’exemple suivant montre comment utiliser la propriété ApplyFilter pour filtrer les enregistrements affichés lorsqu’un bouton bascule nommé tglFilter est choisi.

Private Sub tglFilter_Click()
    With tglFilter
        If .Value = True Then
            .Caption = "P/T"
            .StatusBarText = "only full-timers"
            DoCmd.ApplyFilter , "[Hours]=40"
        ElseIf .Value = False Then
            .Caption = "All"
            .StatusBarText = "only part-timers"
            DoCmd.ApplyFilter , "[Hours]<40"
        Else
            .Caption = "F/T"
            .StatusBarText = "all employees"
            DoCmd.ShowAllRecords
            .SetFocus 'to activate the button's statusbar-text
        End If
    End With
End Sub

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.