Renvoyer un enregistrement spécifique à l’aide de la fonction LookUp

Effectué

La fonction LookUp permet de renvoyer un enregistrement de données individuel. Lookup diffère de la fonction Filter qui renvoie un ou plusieurs enregistrements de table. Utilisez la fonction LookUp pour les contrôles tels que Formulaire, qui ont besoin d’avoir un seul enregistrement spécifié. De plus, vous pouvez afficher un seul champ de l’enregistrement dans un contrôle tel qu’un contrôle Libellé, à l’aide de la notation par point (.).

Pour les besoins de cet exemple, consultez la table de données suivante stockée dans une collection nommée collectCustomerInvoices.

ClearCollect(collectCustomerInvoices, {ID:1, Date:"4/10/2020", CustomerName:"Fabrikam", Amount:212.00}, {ID:2, Date:"3/1/2020", CustomerName:"Contoso", Amount:47.89}, {ID:3, Date:"3/14/2020", CustomerName:"Contoso", Amount:32.99},{ID:4, Date:"4/2/2020", CustomerName:"Fabrikam", Amount:105.32}) 
ID Date CustomerName Amount
1 10/04/2020 Fabrikam 212,00
2 01/03/2020 Contoso 47,89
3 14/03/2020 Contoso 32,99
4 02/04/2020 Fabrikam 105,32

Vous pouvez renvoyer l’enregistrement associé à la date du 14/03/2020 à l’aide de la formule suivante.

LookUp(collectCustomerInvoices, Date = "3/14/2020")

Cette formule renvoie le premier enregistrement de la source de données qui correspond aux critères de date du 14/03/2020. Vous pourriez, par exemple, utiliser cette formule dans la propriété Item d’un contrôle Formulaire.

Une autre utilisation courante de la fonction LookUp permet d’afficher un champ de l’enregistrement. Par exemple, supposons que vous avez une relation de données où vous examinez les données de Contoso et que vous souhaitez renvoyer uniquement le montant de la facture dont l’ID est 3 dans un contrôle Libellé. Vous ajoutez alors un contrôle Libellé, puis vous affichez le montant à l’aide de la formule suivante dans la propriété Text.

LookUp(collectCustomerInvoices, ID =3).Amount

Cette formule affiche alors la valeur 32,99 dans le contrôle Libellé. En effet, la fonction LookUp a renvoyé l’enregistrement complet associé à l’ID 3. Ensuite, la notation .Amount à la fin de la fonction a renvoyé le champ Amount de cet enregistrement.

Chaque fois que vous utilisez la fonction LookUp, cette source de données recherche l’enregistrement. Effectuer une recherche dans une collection est une opération rapide, car les collections sont locales pour votre application. En revanche, si vous effectuez une recherche directement dans une source de données, ce qui est courant, il est inefficace d’effectuer la même requête à plusieurs reprises sur la base de données.

Pour éviter les requêtes répétitives, quand les données ne sont pas amenées à changer, vous pouvez stocker l’enregistrement dans une variable. Ensuite, la notation par point (.) vous permet de renvoyer la valeur de la variable. Prenons un exemple :

  1. Ajoutez un contrôle Bouton à votre application.

  2. Définissez la formule suivante pour la propriété OnSelect du contrôle Bouton :

    Set(varRecord, LookUp(collectCustomerInvoices, ID =3))
    
  3. Ajoutez un contrôle Libellé à votre application.

  4. Définissez la formule suivante pour la propriété Text du contrôle Libellé : varRecord.Amount

Ces étapes vous donnent le même résultat que l’exemple précédent, mais maintenant l’enregistrement est stocké dans la variable varRecord. Vous pouvez accéder aux autres propriétés directement de la même manière.