Dans les bases de données de bureau Access, vous pouvez utiliser la DLookup fonction pour obtenir la valeur d’un champ particulier à partir d’un ensemble d’enregistrements spécifié (un domaine). Vous pouvez utiliser DLookup dans un module Visual Basic pour Applications (VBA), une macro, une expression de requête ou un contrôle calculé figurant sur un formulaire ou un état.
Vous pouvez utiliser la DLookup fonction pour afficher la valeur d’un champ qui ne figure pas dans la source d’enregistrement de votre formulaire ou état. Par exemple, supposons que vous disposez d’un formulaire basé sur une table Détails commande. Le formulaire affiche les OrderIDchamps , , ProductIDUnitPrice, Quantity, et Discount . Toutefois, le ProductName champ se trouve dans une autre table, la Products table. Vous pouvez utiliser la DLookup fonction dans un contrôle calculé pour l’afficher ProductName sur le même formulaire.
Syntaxe
DLookup(expr, domain [, criteria])
La DLookup fonction contient les arguments suivants :
| Argument | Description |
|---|---|
expr |
Obligatoire. Expression qui identifie le champ dont vous souhaitez renvoyer la valeur. Il peut s’agir d’une expression de chaîne qui identifie 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 d’un formulaire, une constante ou une fonction. Si expr elle comprend une fonction, elle peut être intégrée ou définie par l’utilisateur, mais pas une autre fonction d’agrégation ou SQL d’agrégation de domaine. |
domain |
Obligatoire. Expression de chaîne qui identifie l’ensemble d’enregistrements qui compose 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. |
criteria |
Facultatif. Expression de chaîne utilisée pour restreindre la plage de données sur laquelle la fonction s’exécute DLookup . Par exemple, criteria est souvent équivalent à la clause d’une WHERESQL expression, sans le mot WHERE. Si vous omettez criteria, la DLookup fonction évalue expr par rapport au domaine entier. Tout champ inclus dans criteria doit également être un champ dans domain. Sinon, la DLookup fonction retourne Null. |
Remarques
La DLookup fonction renvoie une valeur de champ unique en fonction des informations spécifiées dans criteria. Bien qu’elle criteria soit facultative, si vous ne fournissez pas de valeur, la DLookup fonction retourne une valeur aléatoire dans le domaine.
Si aucun enregistrement ne satisfait criteriaà , ou s’il domain n’en contient aucun, la DLookup fonction renvoie Null.
Si plusieurs champs correspondent à criteria, la DLookup fonction renvoie la première occurrence. Vous devez spécifier des critères qui garantissent que la valeur de champ renvoyée par DLookup est unique. Vous pouvez utiliser une valeur de clé primaire pour vos critères, comme [EmployeeID] dans l’exemple suivant, pour vous assurer que DLookup renvoie une valeur unique :
Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _
"[EmployeeID] = 1")
Que vous utilisiez la DLookup fonction dans une macro ou un module, une expression de requête ou un contrôle calculé, construisez l’argument avec soin afin qu’Access criteria l’évalue correctement.
Vous pouvez utiliser la DLookup fonction 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 d’une requête Mise à jour.
Vous pouvez également utiliser la DLookup fonction dans une expression d’un contrôle calculé figurant sur un formulaire ou état si le champ que vous devez afficher ne figure pas dans la source d’enregistrement sur laquelle votre formulaire ou état est basé. Par exemple, supposons que vous disposez d’un formulaire Détails de la commande basé sur une table Détails de la commande avec une zone de texte appelée ProductID qui affiche le ProductID champ. Pour effectuer une recherche dans ProductName une Products table en fonction de la valeur de la zone de texte, créez une autre zone de texte et attribuez à sa propriété SourceContrôle l’expression suivante :
=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)
Conseils
- Bien qu’il soit possible d’utiliser la fonction RechDom pour afficher la valeur d’un champ d’une table étrangère, il peut être plus efficace de créer une requête contenant les champs requis dans les deux tables, puis de baser votre formulaire ou votre état sur cette requête.
- Vous pouvez également utiliser l’Assistant Liste de choix pour rechercher des valeurs dans une table étrangère.
Remarque
Les modifications non enregistrées apportées aux enregistrements ne domain sont pas incluses lorsque vous utilisez cette fonction. Si vous souhaitez DLookup utiliser les valeurs modifiées, commencez par enregistrer les modifications en cliquant sur Enregistrer l’enregistrement sous Enregistrements sous l’onglet Données , en déplaçant le focus sur un autre enregistrement ou en utilisant la Update méthode.
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 Access VBA.
L’exemple suivant renvoie des informations de nom à partir du CompanyName champ de l’enregistrement qui satisfait à criteria. Le domaine est une Shippers table. L’argument criteria limite l’ensemble d’enregistrements résultant à ceux pour lesquels ShipperID est égal 1à .
Dim varX As Variant
varX = DLookup("[CompanyName]", _
"Shippers", "[ShipperID] = 1")
L’exemple suivant du Shippers tableau utilise le contrôle ShipperID de formulaire pour fournir des critères pour la DLookup fonction. La référence au contrôle n’est pas incluse entre guillemets qui désignent les chaînes. Cela garantit qu’à chaque exécution DLookup , Access obtient 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)