Función DBúsq

Se aplica a
Access para Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

En las bases de datos de escritorio de Access, puede usar la DLookup función para obtener el valor de un campo concreto de un conjunto especificado de registros (un dominio). Puede usar DLookup en un módulo de Visual Basic para Aplicaciones (VBA), una macro, una expresión de consulta o un control calculado en un formulario o informe.

Puede usar la DLookup función para mostrar el valor de un campo que no está en el origen de registros del formulario o informe. Por ejemplo, supongamos que tiene un formulario basado en una tabla Detalles de pedidos. El formulario muestra los OrderIDcampos , ProductID, UnitPrice, Quantityy Discount . Sin embargo, el ProductName campo está en otra tabla, la Products tabla. Puede usar la DLookup función de un control calculado para mostrarla ProductName en el mismo formulario.

Sintaxis

DLookup(expr, domain [, criteria])

La DLookup función tiene estos argumentos:

argumento Descripción
expr Obligatorio. Expresión que identifica el campo cuyo valor desea devolver. Puede ser una expresión de cadena que identifica un campo en una tabla o consulta, o puede ser una expresión que realiza un cálculo en los datos de ese campo. En expr, puede incluir el nombre de un campo en una tabla, un control de un formulario, una constante o una función. Si expr incluye una función, puede ser integrada o definida por el usuario, pero no otra función de agregado o SQL agregado de dominio.
domain Obligatorio. Expresión de cadena que identifica el conjunto de registros que compone el dominio. Puede ser un nombre de tabla o un nombre de consulta para una consulta que no requiere un parámetro.
criteria Opcional. Expresión de cadena usada para restringir el rango de datos en el que se ejecuta la DLookup función. Por ejemplo, criteria a menudo es equivalente a la WHERE cláusula de una SQL expresión, sin la palabra WHERE. Si omite criteria, la DLookup función se expr evalúa con respecto a todo el dominio. Cualquier campo incluido en criteria también debe ser un campo en domain. En caso contrario, la DLookup función devuelve Null.

Observaciones

La DLookup función devuelve un valor de campo único basado en la información especificada en criteria. Aunque criteria es opcional, si no proporciona un valor para él, la DLookup función devuelve un valor aleatorio en el dominio.

Si ningún registro cumple criteria, o si domain no contiene registros, la DLookup función devuelve Null.

Si se encuentra criteriamás de un campo, la DLookup función devuelve la primera aparición. Debe especificar criterios que garanticen que el valor de campo devuelto por DLookup sea único. Es posible que desee usar un valor de clave principal para los criterios, como [EmployeeID] en el ejemplo siguiente, para asegurarse de que DLookup devuelve un valor único:

Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _
    "[EmployeeID] = 1")

Tanto si usa la DLookup función en una macro o módulo, una expresión de consulta o un control calculado, construya el criteria argumento cuidadosamente para que Access lo evalúe correctamente.

Puede usar la DLookup función para especificar criterios en la fila Criterios de una consulta, en una expresión de campo calculado en una consulta o en la fila Actualizar a de una consulta de actualización.

También puede usar la DLookup función en una expresión de un control calculado de un formulario o informe si el campo que necesita mostrar no está en el origen de registros en el que se basa el formulario o informe. Por ejemplo, supongamos que tiene un formulario Detalles de pedido basado en una tabla Detalles de pedido con un cuadro de texto llamado ProductID que muestra el ProductID campo. Para buscar ProductName en una Products tabla basándose en el valor del cuadro de texto, cree otro cuadro de texto y establezca su propiedad ControlSource en la siguiente expresión:

=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)

Recomendaciones

  • Aunque puede usar la función BuscarD para mostrar un valor de un campo en una tabla externa, puede resultar más eficaz crear una consulta que contenga los campos que necesite de ambas tablas y, después, basar el formulario o informe en esa consulta.
  • También puede usar el Asistente para búsquedas para buscar valores en una tabla externa.

Nota

Los cambios no guardados en domain los registros no se incluyen al usar esta función. Si desea DLookup usar los valores cambiados, primero guarde los cambios haciendo clic en Guardar registro en Registros en la pestaña Datos , moviendo el foco a otro registro o usando el Update método.

Ejemplo

Nota

Los ejemplos siguientes muestran el uso de esta función en un módulo de Visual Basic para Aplicaciones (VBA). Para obtener más información sobre cómo trabajar con VBA, vea Referencia de VBA de Access.

En el ejemplo siguiente se devuelve información del nombre del CompanyName campo del registro que cumple los valores criteria. El dominio es una Shippers tabla. El criteria argumento restringe el conjunto resultante de registros a aquellos para los que ShipperID es 1igual a .

Dim varX As Variant
varX = DLookup("[CompanyName]", _
    "Shippers", "[ShipperID] = 1")

En el ejemplo siguiente de la Shippers tabla se usa el control ShipperID de formulario para proporcionar criterios para la DLookup función. La referencia al control no se incluye en las comillas que indican las cadenas. Esto garantiza que cada vez DLookup que se ejecute, Access obtiene el valor actual del control.

Dim varX As Variant
varX = DLookup("[CompanyName]", "Shippers", _
    "[ShipperID] = " & Forms!Shippers!ShipperID)

En el ejemplo siguiente se usa una variable, intSearch, para obtener el valor.

Dim intSearch As Integer
Dim varX As Variant
intSearch = 1
varX = DLookup("[CompanyName]", "Shippers", _
    "[ShipperID] = " & intSearch)