Share via


Método Application.DLookup (Access)

Use la función DLookup para obtener el valor de un campo determinado de un conjunto especificado de registros (un dominio).

Sintaxis

expresión. DLookup (Expr, Domain, Criteria)

expresión Variable que representa un objeto Application.

Parámetros

Nombre Obligatorio/opcional Tipo de datos Descripción
Expr Obligatorio String Una expresión que identifica el campo cuyo valor se quiere devolver. Puede ser una expresión de cadena que identifica un campo de una tabla o consulta, o una expresión que realiza un cálculo con 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 de dominio o de agregado de SQL.
Dominio Obligatorio String Una expresión de cadena que identifica el conjunto de registros que constituyen el dominio. Puede ser un nombre de tabla o de consulta para una consulta que no requiere ningún parámetro.
Criteria Opcional Variant Expresión de cadena opcional que se usa para restringir el intervalo de datos en el que se realiza la función DLookup . Por ejemplo, criteria suele ser equivalente a la cláusula WHERE en una expresión SQL, sin la palabra WHERE. Si se omite criteria , la función DLookup evalúa expr en todo el dominio. Cualquier campo incluido en los criterios también debe ser un campo en el dominio; De lo contrario, la función DLookup devuelve un valor Null.

Valor devuelto

Variant

Comentarios

Use la función DLookup para mostrar el valor de un campo que no está en el origen del registro del formulario o informe. Por ejemplo, supongamos que tiene un formulario basado en una tabla Order Details. El formulario muestra los campos OrderID, ProductID, UnitPrice, Quantity y Discount . Sin embargo, el campo ProductName está en otra tabla, la tabla Products. Puede usar la función DLookup en un control calculado para mostrar productname en el mismo formulario.

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

Si ningún registro satisface los criterios o si el dominio no contiene registros, la función DLookup devuelve un valor Null.

Si más de un campo cumple los criterios, la función DLookup devuelve la primera aparición. Deberá especificar criterios que aseguren que el valor de campo devuelto en la función DLookup sea único. Quizá quiera usar una clave principal para los criterios, como [EmployeeID] en el ejemplo siguiente, para asegurarse de que la función DLookup devuelve un valor único:

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

Tanto si usa la función DLookup en una macro o módulo, una expresión de consulta o un control calculado, debe construir el argumento criteria cuidadosamente para asegurarse de que se evaluará correctamente.

Use la función DLookup para especificar criterios en la fila Criterios de una consulta, dentro de una expresión de campo calculada en una consulta o en la fila Actualizar a de una consulta de actualización.

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

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

Sugerencia

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

Ejemplo:

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

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

En el ejemplo siguiente de la tabla Shippers se usa el control de formulario ShipperID con el fin de proporcionar criterios para la función DBúsq (DLookup). 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 Access obtendrá 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)

Los ejemplos siguientes muestran cómo usar varios tipos de criterios con la función DLookup.

    ' ***************************
    ' Typical Use
    ' Numerical values. Replace "number" with the number to use.
    variable = DLookup("[FieldName]", "TableName", "[Criteria] = number")

    ' Strings.
    ' Numerical values. Replace "string" with the string to use.
    variable = DLookup("[FieldName]", "TableName", "[Criteria]= 'string'")

    ' Dates. Replace "date" with the string to use.
    variable = DLookup("[FieldName]", "TableName", "[Criteria]= #date#")
    ' ***************************

    ' ***************************
    ' Referring to a control on a form
    ' Numerical values
    variable = DLookup("[FieldName]", "TableName", "[Criteria] = " & Forms!FormName!ControlName)

    ' Strings
    variable = DLookup("[FieldName]", "TableName", "[Criteria] = '" & Forms!FormName!ControlName & "'")

    ' Dates
    variable = DLookup("[FieldName]", "TableName", "[Criteria] = #" & Forms!FormName!ControlName & "#")
    ' ***************************

    ' ***************************
    ' Combinations
    ' Multiple types of criteria
    variable = DLookup("[FieldName]", "TableName", "[Criteria1] = " & Forms![FormName]![Control1] _
             & " AND [Criteria2] = '" & Forms![FormName]![Control2] & "'" _
            & " AND [Criteria3] =#" & Forms![FormName]![Control3] & "#")
    
    ' Use two fields from a single record.
    variable = DLookup("[LastName] & ', ' & [FirstName]", "tblPeople", "[PrimaryKey] = 7")
            
    ' Expressions
    variable = DLookup("[Field1] + [Field2]", "tableName", "[PrimaryKey] = 7")
    
    ' Control Structures
    variable = DLookup("IIf([LastName] Like 'Smith', 'True', 'False')", "tableName", "[PrimaryKey] = 7")
    ' ***************************
```The following example shows how to use **DLookUp** in a Do Loop. It demonstrates how to build the Criteria string on each pass through the loop.

```vba
' The loop verifies data from an input data set, in this case Operating System names, 
' against those contained in a Master List.

Do Until I1 > NRec1
    ' An apostrophe is concatenated at the beginning and at the end of a datum referenced by "rs1!OS", 
    ' which is then concatenated to build the entire criteria string.
    Str_2 = "'" & rs1!OS & "'"
    Str_1 = "[OS] = " & Str_2
    
    J1 = DLookup("[ID]", "tbl_81_Operating_Systems_Master_List", Str_1)
    
    If IsNull(J1) = True Then
        ' If an OS name is not found, then a flag is set and the name of the unknown OS is output to a table.
        rs3.AddNew
        rs3.OS = rs1!OS
        rs3.Update
        Err_Fl = False

    End If

    rs1.MoveNext
    I1 = I1 + 1

Loop

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.