Dans Access bases de données de bureau, vous pouvez utiliser la fonction DLookup pour obtenir la valeur d’un champ particulier à partir d’un jeu d’enregistrements spécifié (un domaine ). Utilisez la fonction DLookup dans un module Visual Basic pour Applications (VBA), un macro, une expression de requête ou un contrôle calculé sur un formulaire ou un état.
Vous pouvez utiliser la fonction DLookup pour afficher la valeur d’un champ qui n’est pas dans la source d’enregistrement de votre formulaire ou état. Par exemple, supposons que vous ayez un formulaire basé sur une table Détails de la commande. Le formulaire affiche les champs OrderID, ProductID, UnitPrice, Quantity et Discount. Toutefois, le champ ProductName se trouve dans une autre table, la table Products. Vous pouvez utiliser la fonction DLookup dans un contrôle calculé pour afficher le ProductName sur le même formulaire.
Syntaxe
DLookup( expr, domain [, criteria] )
La syntaxe de la fonction DLookup contient les arguments suivants :
Argument |
Description |
---|---|
expr |
Obligatoire. Expression qui identifie le champ dont vous souhaitez retourner la valeur. Il peut s’agir d’un expression de chaîne identifiant un champ dans une table ou une requête, ou d’une expression qui effectue un calcul sur les données de ce champ. Dans expr, vous pouvez inclure le nom d’un champ dans une table, un contrôle sur un formulaire, une constante ou une fonction. Si expr inclut une fonction, elle peut être intégrée ou définie par l’utilisateur, mais pas une autre fonction d’agrégation de domaine ou SQL. |
domaine |
Obligatoire. Expression de chaîne identifiant le jeu d’enregistrements qui constitue le domaine. Il peut s’agir d’un nom de table ou d’un nom de requête pour une requête qui ne nécessite pas de paramètre. |
critères |
Facultatif. Expression de chaîne utilisée pour restreindre la plage de données sur laquelle la fonction DLookup est exécutée. Par exemple, les critères sont souvent équivalents à la clause WHERE dans une expression SQL, sans le mot WHERE. Si critères est omis , la fonction DLookup évalue expr par rapport à l’ensemble du domaine. Tout champ inclus dans les critères doit également être un champ dans le domaine ; sinon, la fonction DLookup retourne une valeur Null. |
Notes
La fonction DLookup retourne une valeur de champ unique en fonction des informations spécifiées dans critères. Bien que critère soit un argument facultatif, si vous ne fournissez pas de valeur pour les critères, la fonction DLookup retourne une valeur aléatoire dans le domaine.
Si aucun enregistrement ne répond aux critères ou si le domaine ne contient aucun enregistrement, la fonction DLookup renvoie une valeur Null.
Si plusieurs champs répondent aux critères, la fonction DLookup retourne la première occurrence. Vous devez spécifier des critères qui garantissent que la valeur de champ retournée par la fonction DLookup est unique. Vous pouvez utiliser une valeur clé primaire pour vos critères, comme [EmployeeID] dans l’exemple suivant, pour vous assurer que la fonction DLookup retourne une valeur unique :
Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _ "[EmployeeID] = 1")
Que vous utilisiez la fonction DLookup dans une macro ou un module, une expression de requête ou un contrôle calculé, vous devez construire l’argument critère avec soin pour vous assurer qu’il sera évalué correctement.
Vous pouvez utiliser la fonction DLookup pour spécifier des critères dans la ligne Critères d’une requête, dans une expression de champ calculé dans une requête ou dans la ligne Mettre à jour vers dans un requête Mise à jour.
Vous pouvez également utiliser la fonction DLookup dans une expression dans un contrôle calculé sur un formulaire ou un état si le champ que vous devez afficher ne se trouve pas dans la source d’enregistrement sur laquelle votre formulaire ou état est basé. Par exemple, supposons que vous ayez un formulaire Détails de commande basé sur une table Détails de commande avec une zone de texte appelée ProductID qui affiche le champ ProductID. Pour rechercher ProductName à partir d’une table Products en fonction de la valeur de la zone de texte, vous pouvez créer une autre zone de texte et définir sa propriété ControlSource sur l’expression suivante :
=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)
Conseils
-
Bien que vous puissiez utiliser la fonction DLookup pour afficher une valeur à partir d’un champ dans un table étrangère, il peut être plus efficace de créer une requête qui contient les champs dont vous avez besoin à partir des deux tables, puis de baser votre formulaire ou état sur cette requête.
-
Vous pouvez également utiliser l’Assistant Recherche pour rechercher des valeurs dans une table étrangère.
Remarque : Les modifications non enregistrées apportées aux enregistrements dans le domaine ne sont pas incluses lorsque vous utilisez cette fonction. Si vous souhaitez que la fonction DLookup soit basée sur les valeurs modifiées, vous devez d’abord enregistrer les modifications en cliquant sur Enregistrer l’enregistrement sous l’onglet Données, en déplaçant le focus vers un autre enregistrement ou en utilisant la méthode Update.
Exemple
Remarque : Les exemples suivants illustrent l’utilisation de cette fonction dans un module Visual Basic pour Applications (VBA). Pour plus d’informations sur l’utilisation de VBA, consultez Référence VBA Access.
L’exemple suivant retourne des informations de nom à partir du champ CompanyName de l’enregistrement répondant aux critères. Le domaine est une table Shippers. L’argument critère limite le jeu d’enregistrements résultant à ceux pour lesquels ShipperID est égal à 1.
Dim varX As Variant
varX = DLookup("[CompanyName]", _ "Shippers", "[ShipperID] = 1")
L’exemple suivant de la table Shippers utilise le contrôle de formulaire ShipperID pour fournir des critères pour la fonction DLookup . Notez que la référence au contrôle n’est pas incluse dans les guillemets qui indiquent les chaînes. Cela garantit que chaque fois que la fonction DLookup est appelée, Access obtiendrez la valeur actuelle du contrôle.
Dim varX As Variant
varX = DLookup("[CompanyName]", "Shippers", _ "[ShipperID] = " & Forms!Shippers!ShipperID)
L’exemple suivant utilise une variable, intSearch, pour obtenir la valeur .
Dim intSearch As Integer
Dim varX As Variant intSearch = 1 varX = DLookup("[CompanyName]", "Shippers", _ "[ShipperID] = " & intSearch)