Permet de rechercher un ou plusieurs enregistrements dans une table.

Description

La fonction Filter recherche les enregistrements d’une table qui répondent à une formule. Utilisez Filter pour rechercher un jeu d’enregistrements qui correspondent à un ou plusieurs critères et ignorer ceux qui n’y correspondent pas.

La fonction LookUp recherche le premier enregistrement d’une table qui répond à une formule. Utilisez LookUp pour rechercher un enregistrement unique qui correspond à un ou plusieurs critères.

Pour ces deux fonctions, la formule est analysée pour chaque enregistrement de la table. Les enregistrements dont le résultat est true font partie du résultat. En plus des opérateurs de formule habituels, vous pouvez utiliser les opérateurs in et exactin pour les correspondances de sous-chaînes.

Les champs de l’enregistrement en cours de traitement sont disponibles dans la formule. Vous y faites simplement référence par nom comme vous le feriez pour toute autre valeur. Vous pouvez également référencer les propriétés de contrôle et d’autres valeurs à partir de votre application. Pour plus d’informations, consultez les exemples ci-dessous et la section relative à l’utilisation des étendues d’enregistrement.

La fonction Search recherche les enregistrements d’une table qui contienne une chaîne dans l’une de leurs colonnes. Cette chaîne peut apparaître n’importe où dans la colonne. Par exemple, rechercher « rob » ou « bert » revient à trouver une correspondance dans une colonne qui contient « Robert ». La recherche n’est pas sensible à la casse. Contrairement aux fonctions Filter et LookUp, la fonction Search utilise une chaîne unique et non une formule pour établir la correspondance.

Filter et Search renvoient une table qui contient les mêmes colonnes que la table d’origine et les enregistrements qui correspondent aux critères. LookUp renvoie uniquement le premier enregistrement trouvé, après avoir appliqué une formule pour limiter l’enregistrement à une valeur unique. Si aucun enregistrement n’est trouvé, Filter et Search renvoient une table vide et LookUp, une valeur vide.

Les tables sont une valeur dans PowerApps, comme une chaîne ou un chiffre. Elles peuvent être transmises et renvoyées par les fonctions. Les fonctions Filter, Search et LookUp ne modifient pas les tables. Au lieu de cela, elles prennent une table en tant qu’argument et renvoient une table, un enregistrement ou une valeur unique. Pour plus d’informations, voir Utilisation des tables.

Délégation

Lorsque cela est possible, PowerApps délègue les opérations de filtre et de tri à la source de données et parcourt les résultats à la demande. Par exemple, lorsque vous démarrez une application qui affiche un contrôle Gallery contenant des données, seul le premier jeu d’enregistrements s’affiche initialement sur l’appareil. À mesure que l’utilisateur fait défiler la page, des données supplémentaires s’affichent à partir de la source de données. Cela se traduit par un temps de démarrage plus rapide pour l’application, tout en permettant d’accéder à des jeux de données très volumineux.

La délégation n’est cependant pas toujours possible. Les opérateurs et les fonctions pris en charge avec la délégation varient selon les sources de données. Si la délégation complète d’une formule n’est pas possible, l’environnement de programmation marquera la partie qui ne peut pas être déléguée en y ajoutant un avertissement. Lorsque cela est possible, pensez à modifier la formule pour éviter les fonctions et les opérateurs qui ne peuvent pas être délégués. La liste des délégations détaille les sources de données et les opérations pouvant être déléguées.

Si la délégation n’est pas possible, PowerApps extrait seulement un petit jeu d’enregistrements sur lequel travailler en local. Les fonctions de filtre et de tri fonctionneront alors sur un ensemble réduit d’enregistrements. Les éléments disponibles dans la galerie ne sont peut-être pas exhaustifs, ce qui peut entraîner une confusion pour les utilisateurs.

Pour plus d’informations, consultez la vue d’ensemble de la délégation.

Syntaxe

Filter( Table, Formula1 [, Formula2, ... ] )

  • Table - Requis. Table dans laquelle effectuer une recherche.
  • *Formula(s)* : requis. Formule selon laquelle chaque enregistrement de la table est évalué. La fonction retourne tous les enregistrements évalués à true. Vous pouvez référencer des colonnes dans la table. Si vous fournissez plusieurs formules, les résultats de toutes les formules sont combinés avec la fonction And.

Search( Table, SearchString, Column1 [, Column2, ... ] )

  • Table - Requis. Table dans laquelle effectuer une recherche.
  • SearchString* : requis. Chaîne à rechercher. Si *vide ou si une chaîne vide est utilisée, tous les enregistrements sont renvoyés.
  • Column(s)* : requis. Noms de colonnes dans *Table à rechercher. Les colonnes sur lesquelles porte la recherche doivent contenir du texte. Les noms de colonnes doivent être des chaînes et figurer entre guillemets doubles. Toutefois, les noms de colonnes doivent être statiques et ne peuvent pas être calculés avec une formule. Si SearchString se trouve dans les données de l’une de ces colonnes sous forme de correspondance partielle, l’enregistrement complet est renvoyé.

LookUp( Table, Formula [, ReductionFormula ] )

  • Table - Requis. Table dans laquelle effectuer une recherche. Dans l’interface utilisateur, la syntaxe est affichée en tant que source au-dessus de la zone de fonction.
  • Formula - Requis. Formule selon laquelle chaque enregistrement de la table est évalué. La fonction retourne le premier enregistrement évalué à true. Vous pouvez référencer des colonnes dans la table. Dans l’interface utilisateur, la syntaxe est affichée en tant que condition au-dessus de la zone de fonction.
  • ReductionFormula* : facultatif. Cette formule est évaluée sur l’enregistrement qui a été trouvé, puis réduit l’enregistrement à une valeur unique. Vous pouvez référencer des colonnes dans la table. Si vous n’utilisez pas ce paramètre, la fonction retourne l’enregistrement complet de la table. Dans l’interface utilisateur, la syntaxe est affichée en tant que *résultat au-dessus de la zone de fonction.

Exemples

Les exemples suivants utilisent IceCream comme source de données :

Formule Description Résultat
Filter( IceCream, OnOrder > 0 ) Renvoie les enregistrements dans lesquels OnOrder est supérieur à zéro.
Filter( IceCream, Quantity + OnOrder > 225 ) Renvoie les enregistrements dans lesquels la somme des colonnes Quantity et OnOrder est supérieure à 225.
Filter( IceCream, "chocolate" in Lower( Flavor ) ) Renvoie les enregistrements dans lequel le mot « chocolate » apparaît dans le nom Flavor, indépendamment de la casse.
Filter( IceCream, Quantity < 10 && OnOrder < 20 ) Renvoie les enregistrements dans lesquels la valeur de Quantity est inférieure à 10 et celle de OnOrder à 20. Aucun enregistrement ne correspondant à ces critères, une table vide est renvoyée.
Search( IceCream, "choc", "Flavor" ) Renvoie les enregistrements dans lesquels le mot « chocolate » apparaît dans le nom Flavor, indépendamment de la casse.
Search( IceCream, "", "Flavor" ) Étant donné que le terme de recherche est vide, tous les enregistrements sont renvoyés.
LookUp( IceCream, Flavor = "Chocolate", Quantity ) Recherche un enregistrement dont la valeur de Flavor est égale à « Chocolate » (un seul). Pour le premier enregistrement trouvé, renvoie la valeur de Quantity de cet enregistrement. 100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) Recherche un enregistrement dont la valeur Quantity supérieure à 100 (plusieurs). Pour le premier enregistrement trouvé, c’est-à-dire Flavor « Vanilla », renvoie la somme des colonnes Quantity et OnOrder. 250
LookUp( IceCream, Flavor = "Pistachio", OnOrder ) Recherche un enregistrement dont la valeur de Flavor est égale à « Pistachio » (aucun). Aucun n’ayant été trouvé, Lookup renvoie vide. blank
LookUp( IceCream, Flavor = "Vanilla" ) Recherche un enregistrement dont la valeur de Flavor est égale à « Vanilla » (un seul). Dans la mesure où aucune formule de réduction n’est appliquée, tout l’enregistrement est renvoyé. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Expérience de recherche de l’utilisateur

Dans de nombreuses applications, vous pouvez entrer un ou plusieurs caractères dans une zone de recherche pour filtrer une liste d’enregistrements dans un jeu de données volumineux. Pendant que vous tapez, la liste présente uniquement les enregistrements qui correspondent aux critères de recherche.

Les autres exemples de cette rubrique présentent les résultats de la recherche d’une liste Customers qui contient les données suivantes :

Pour créer cette source de données en tant que collection, créez un contrôle Bouton et définissez sa propriété OnSelect en utilisant la formule suivante :

ClearCollect( Customers, Table( { Name: "Fred Garcia", Company: "Northwind Traders" }, { Name: "Cole Miller", Company: "Contoso" }, { Name: "Glenda Johnson", Company: "Contoso" }, { Name: "Mike Collins", Company: "Adventure Works" }, { Name: "Colleen Jones", Company: "Adventure Works" } ) )

Comme dans cet exemple, vous pouvez afficher une liste d’enregistrements dans un contrôle Galerie au bas d’un écran. En haut de l’écran, vous pouvez ajouter un contrôle Entrée de texte appelé SearchInput, pour permettre aux utilisateurs d’indiquer les enregistrements qui les intéressent.

Quand l’utilisateur entre des caractères dans SearchInput, les résultats de la galerie sont automatiquement filtrés. Dans cet exemple, la galerie est configurée de manière à afficher les enregistrements pour lesquels le nom du client (et non celui de l’entreprise) commence par la séquence de caractères dans SearchInput. Si l’utilisateur tape co dans la zone de recherche, la galerie affiche les résultats suivants :

Pour filtrer en fonction de la colonne Name, définissez la propriété Items du contrôle de galerie sur l’une de ces formules :

Formule Description Résultat
Filter( Customers, StartsWith( Name, SearchInput.Text ) ) Permet de filtrer la source de données Customers pour afficher les enregistrements dans lesquels la chaîne de recherche apparaît au début de la colonne Name. Le test n’est pas sensible à la casse. Si l’utilisateur tape co dans la zone de recherche, la galerie affiche Colleen Jones et Cole Miller. La galerie n’affiche pas Mike Collins, car la colonne Name de cet enregistrement ne commence pas par la chaîne de recherche.
Filter( Customers, SearchInput.Text in Name ) Permet de filtrer la source de données Customers pour afficher les enregistrements dans lesquels la chaîne de recherche apparaît n’importe où dans la colonne Name. Le test n’est pas sensible à la casse. Si l’utilisateur tape co dans la zone de recherche, la galerie affiche Colleen Jones, Cole Miller et Mike Collins, car la chaîne de recherche apparaît quelque part dans la colonne Name de tous ces enregistrements.
Search( Customers, SearchInput.Text, "Name" ) À l’image de l’opérateur in, la fonction Search permet de rechercher une correspondance n’importe où dans la colonne Name de chaque enregistrement. Notez que le nom de colonne doit être placé entre guillemets doubles.

Vous pouvez étendre votre recherche de manière à inclure la colonne Company ainsi que la colonne Name :

Formule Description Résultat
Filter( Customers, StartsWith( Name, SearchInput.Text ) || StartsWith( Company, SearchInput.Text ) ) Permet de filtrer la source de données Customers pour afficher les enregistrements dans lesquels la colonne Name ou la colonne Company commence par la chaîne de recherche (par exemple, co). L’opérateur || a pour valeur true si l’une des fonctions StartsWith a pour valeur true.
Filter( Customers, SearchInput.Text in Name || SearchInput.Text in Company ) Permet de filtrer la source de données Customers pour afficher les enregistrements dans lesquels la colonne Name ou la colonne Company contient la chaîne de recherche (par exemple, co).
Search( Customers, SearchInput.Text, "Name", "Company" ) À l’image de l’opérateur in, la fonction Search permet de rechercher dans la source de données Customers les enregistrements dans lesquels la colonne Name ou la colonne Company contient la chaîne de recherche (par exemple, co). La fonction Search est plus facile à lire et à écrire que la fonction Filter si vous voulez spécifier plusieurs colonnes et plusieurs opérateurs in. Notez que le nom des colonnes doit être placé entre guillemets doubles.