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 jeu 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é sur un formulaire ou un état.
Vous pouvez utiliser la DLookup fonction 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 OrderIDchamps , UnitPriceProductID, 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 a les arguments suivants :
| Argument | Description |
|---|---|
expr |
Obligatoire. Expression qui identifie le champ dont vous souhaitez retourner 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 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 d’agrégation. |
domain |
Obligatoire. Expression de chaîne qui identifie le jeu 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 WHERE clause dans une SQL expression, sans le mot WHERE. Si vous omettez criteria, la DLookup fonction est expr évaluée par rapport à l’ensemble du domaine. Tout champ inclus dans criteria doit également être un champ dans domain. Sinon, la DLookup fonction retourne Null. |
Remarques
La DLookup fonction retourne une valeur de champ unique en fonction des informations spécifiées dans criteria. Bien que criteria soit facultatif, si vous ne lui fournissez pas de valeur, la DLookup fonction retourne une valeur aléatoire dans le domaine.
Si aucun enregistrement ne satisfait criteriaou si domain ne contient aucun enregistrement, la DLookup fonction retourne Null.
Si plusieurs champs répondent à criteria, la DLookup fonction retourne la première occurrence. Vous devez spécifier des critères qui garantissent que la valeur de champ retourné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 retourne 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 criteria avec soin afin qu’Access l’évalue correctement.
Vous pouvez utiliser la fonction pour spécifier des DLookup 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 une requête de mise à jour.
Vous pouvez également utiliser la DLookup fonction 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 ProductID champ. Pour rechercher ProductName dans une Products table en fonction de la valeur de la zone de texte, créez une autre zone de texte et définissez 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 une 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 domain ne sont pas incluses lorsque vous utilisez cette fonction. Si vous souhaitez DLookup utiliser les valeurs modifiées, enregistrez d’abord 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 VBA Access.
L’exemple suivant retourne des informations de nom à partir du CompanyName champ de l’enregistrement qui satisfait criteria. Le domaine est une Shippers table. L’argument criteria limite le jeu d’enregistrements résultant à ceux pour lesquels ShipperID est 1égal à .
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 dans les guillemets qui indiquent 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)