DBúsq (función)

Puede usar la función DBúsq para obtener el valor de un campo en un conjunto especificado de registros (un dominio (dominio: conjunto de registros definido por una tabla, una consulta o una expresión SQL. Las funciones de agregado de dominio devuelven información estadística sobre un dominio o un conjunto de registros específico.)). Use la función DBúsq en un módulo de Visual Basic para Aplicaciones (VBA), en una macro (macro: acción o conjunto de acciones utilizados para automatizar tareas. Las macros se graban en el lenguaje de programación de Visual Basic para Aplicaciones.), en una expresión de consulta o en un control calculado (control calculado: control que se utiliza en un formulario, informe o página de acceso a datos para mostrar el resultado de una expresión. El resultado se vuelve a calcular cada vez que hay un cambio en uno de los valores en los que se basa la expresión.).

Puede usar la función DBúsq para mostrar el valor de un campo que no se encuentra en el origen de registros en que está basado el formulario o informe. Por ejemplo, suponga que tiene un formulario basado en una tabla Detalles de pedido. El formulario muestra los campos IdPedido, IdProducto, PrecioUnidad, Cantidad y Descuento. Sin embargo, el campo NombreProducto está en otra tabla, la tabla Productos. Puede utilizar la función DBúsq en un control calculado para mostrar el NombreProducto en el mismo formulario.

Sintaxis

DBúsq(expr, dominio [, criterios] )

La sintaxis de la función DBúsq tiene los siguientes argumentos:

Argumento Descripción
expr Requerido. Expresión que identifica el campo cuyo valor desea devolver. Puede ser una expresión de cadena (expresión de cadena: expresión que evalúa una secuencia de caracteres contiguos. Los elementos de la expresión pueden ser: funciones que devuelven una cadena o un tipo Variant (VarType 8) de cadena; un tipo literal, constante, variable o Variant de cadena.) que identifique un campo de una tabla o de una consulta, o puede ser una expresión que realice un cálculo sobre los datos de ese campo. En expr, puede incluir el nombre de un campo de una tabla, un control de un formulario, una constante o una función. Si expr incluye una función, ésta puede estar integrada o puede ser definida por el usuario, pero no puede ser otra función de agregado de dominio ni una función de agregado de SQL.
dominio Requerido. Expresión de cadena que identifica el conjunto de registros que constituye el dominio. Puede ser un nombre de tabla o un nombre de consulta de una consulta que no requiera un parámetro.
criterios Opcional. Expresión de cadena utilizada para restringir el intervalo de los datos en los que se ejecuta la función DBúsq. Por ejemplo, criterios con frecuencia es equivalente a la cláusula WHERE en una expresión SQL, sin la palabra WHERE. Si se omite criterios, la función DBúsq evalúa expr para todo el dominio. Cualquier campo que se incluya en criterios debe ser también un campo de dominio; de lo contrario, la función DBúsq devuelve el valor Null (Null: valor que puede especificarse en un campo o usarse en expresiones o consultas para indicar datos desconocidos o ausentes. En Visual Basic, la palabra clave Null indica un valor Null. Algunos campos, como los de clave principal, no pueden contener un valor Null.).

Comentarios

La función DBúsq devuelve un único campo basado en la información especificada en criterios. Aunque criterios es un argumento opcional, si no se proporciona un valor para criterios, la función DBúsq devuelve un valor aleatorio en el dominio.

Si ningún registro cumple los criterios o si el dominio no contiene registros, la función DBúsq devuelve el valor Null.

Si más de un campo cumple los criterios, la función DBúsq devuelve la primera aparición. Debe especificar los criterios que van a asegurar que el valor de campo devuelto por la función DBúsq es único. Quizá desee utilizar un valor de clave principal (clave principal: uno o más campos (columnas) cuyos valores identifican de manera exclusiva cada registro de una tabla. Una clave principal no puede permitir valores Nulo y debe tener siempre un índice exclusivo. Una clave principal se utiliza para relacionar una tabla con claves externas de otras tablas.)para los criterios, como [EmployeeID] en el siguiente ejemplo, para asegurarse de que la función DBúsq devuelve un valor único:

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

Independientemente de si usa la función DBúsq en una macro, módulo, expresión de consulta o control calculado, debe crear el argumento criterios con cuidado para garantizar que se evaluará correctamente.

Puede usar la función DBúsq para especificar criterios en la fila Criterios de una consulta, en una expresión de campo calculado de una consulta o en la fila Actualizar a de una consulta de actualización (consulta de actualización: consulta de acción (instrucción SQL) que modifica un conjunto de registros de acuerdo con los criterios (condiciones de búsqueda) especificados.).

También puede utilizar la función DBúsq en una expresión en un control calculado de un formulario o informe si el campo que debe mostrar no está en el origen de registros en que está basado el formulario o informe. Por ejemplo, suponga que tiene un formulario Detalles de pedido basado en una tabla Detalles de pedido con un cuadro de texto denominado IdProducto que muestra el campo IdProducto. Para buscar NombreProducto en una tabla Productos basándose en el valor del cuadro de texto, puede crear otro cuadro de texto y establecer su propiedad OrigenDelControl (ControlSource) en la expresión siguiente:

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

Sugerencias

 Nota   Los cambios no guardados efectuados en registros de dominio no se incluirán cuando utilice estas funciones. Si desea que la función DBúsq se base en los valores cambiados, primero debe guardar los cambios al hacer clic en Guardar registro en el menú Registros en la ficha Datos, mover la selección a otro registro o utilizar el método Update.

Ejemplo

 Nota   Los ejemplos que vienen a continuación demuestran el uso de esta función en un módulo de Visual Basic para Aplicaciones (VBA). Para obtener información acerca de cómo trabajar con VBA, seleccione Referencia del programador en la lista desplegable situada junto a Buscar y escriba uno o más términos en el cuadro de búsquedas.

En el siguiente ejemplo se devuelve información sobre el campo CompanyName (Nombre de compañía) del registro que cumple con los criterios. El dominio es la tabla Shippers (Compañías de envíos). El argumento criterios restringe el conjunto de registros resultante a aquéllos para los que ShipperID (Id. de compañía de envíos) es igual a 1.

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

En el ejemplo siguiente de la tabla Shippers (Compañías de envíos) se utiliza el control de formulario ShipperID (Id. de compañía de envíos) con el fin de proporcionar criterios para la función DBúsq. Observe que la referencia al control no está incluida en los signos de comillas tipográficas que denotan las cadenas. De esta forma se garantiza que cada vez que se llame a la función DBúsq, Microsoft Office Access 2007 obtendrá el valor actual del control.

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

En el siguiente ejemplo 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)
      
 
 
Corresponde a:
Access 2013, Access 2010, Access 2007