Descripción del uso de DBúsq(), ejemplos y solución de problemas en Access 2000

Principiante: Se requieren conocimientos de la interfaz de usuario en equipos de usuario único.

En este artículo se aplica a una base de datos de Microsoft Access (.mdb) y a un proyecto de Microsoft Access (.adp).

Para obtener una versión de Microsoft Access 2002 de este artículo, consulte
285866 .
Para una versión de Microsoft Access 97 de este artículo, consulte
136122 .

Resumen

En este artículo se muestra cómo utilizar la función DBúsq() e incluye ejemplos y sugerencias.

En este artículo se tratan los siguientes temas:

  • La sintaxis de la función DBúsq (DLookup)() y el uso.
  • Los ejemplos de la función DLookup() siguientes:
    • Una función sin criterios
    • Especificar criterios numéricos
    • Especificar criterios numéricos obtenidos de un campo de un formulario
    • Especificar criterios de texto
    • Especificar criterios de texto obtenidos de un campo de un formulario
    • Especificar criterios de fecha
    • Especificar múltiples campos en los criterios
  • Sugerencias para solucionar problemas y depurar expresiones de DLookup().
Tenga en cuenta que la muchas dificultades en el uso de la función DLookup ()se producen por no configurar y proporcionar correctamente la expresión de criterios. La expresión de criterio es común a muchas otras funciones de agregado (totales), como () DSuma (DSum), () DPrim (DFirst), DÚltimo(), () DMín (DMin), () DMáx (DMax)y () DCont (DCount). Por lo tanto, el material siguiente es útil para comprender las funciones de agregado de dominio, así como la función DBúsq().

Más información

La sintaxis de la función DBúsq() y uso

Puede utilizar la función DLookup ()en una expresión o en una de Visual Basic para Aplicaciones función para devolver un valor de campo en un dominio, o especifica el conjunto de registros.


La sintaxis de la función DLookup ()es la siguiente:
   DLookup(Expression, Domain [, Criteria])

La función tiene tres argumentos: expresión, dominio, y criterios. (Tenga en cuenta que el argumento criterio es opcional).

El argumento expresión se utiliza para identificar el campo que contiene los datos del dominio que desea que se devuelvan o para realizar cálculos con los datos de ese campo.

El argumento de dominio es el nombre del conjunto de registros que identifica el dominio. Puede ser una tabla o un nombre de consulta.

El argumento de criterios es una expresión de cadena opcional que puede utilizar para restringir el intervalo de los datos que la función DBúsq() se realiza en. Tenga en cuenta que el argumento de criterios es idéntico a la cláusula WHERE en una expresión SQL (excepto en que no se utilice la palabra clave WHERE).

La función DLookup ()devuelve un valor de un único campo, incluso si más de un registro que satisface los criterios. Si ningún registro cumple los criterios o si dominio no contiene registros, () DBúsq (DLookup)devuelve Null.

Ejemplos de la función DBúsq()

Los ejemplos siguientes muestran cómo puede utilizar () DBúsq (DLookup)para encontrar o devolver valores de una tabla o consulta. Estos ejemplos se refieren a la base de datos de ejemplo Neptuno.mdb, y puede escribir los ejemplos en la propiedad ControlSource de un cuadro de texto en un formulario o informe.

NOTA: en las expresiones de ejemplo siguientes, un subrayado (_) al final de una línea se utiliza como un carácter de continuación de línea. Quite el subrayado del final de la línea al volver a crear estas expresiones.

Una función sin criterios:

En este ejemplo se muestra cómo utilizar la función DLookup ()en su forma más simple: sin especificar criterio alguno. Este ejemplo devuelve el valor contenido en el campo LastName del primer registro de la tabla empleados:
   =DLookUp("[LastName]", "Employees")

Especificar criterios numéricos:

Para buscar los apellidos del empleado cuyo identificador número 7, especifique un criterio para limitar el intervalo de registros utilizados:
   =DLookUp("[LastName]", "Employees", "[EmployeeID] = 7")

Especificar criterios numéricos obtenidos de un campo de un formulario:

Si no desea especificar un determinado valor en la expresión (como en el ejemplo anterior), utilice en su lugar un parámetro en el criterio. Los ejemplos siguientes muestran cómo especificar criterios de otro campo en el formulario actual. Puede probar estos en el formulario pedidos en la base de datos de ejemplo Neptuno.mdb.
   =DLookUp("[LastName]", "Employees", _
"[EmployeeID] = Form![EmployeeID]")

   =DLookUp("[LastName]", "Employees", _
"[EmployeeID] = " & [EmployeeID])

   =DLookUp("[LastName]", "Employees", _
"[EmployeeID] = " & Forms![Orders]![EmployeeID])

Estos tres ejemplos devuelven el mismo resultado.

¡En el primer ejemplo, el formulario! [IdEmpleado] aparece dentro de comillas de criterios. "Form" indica a Microsoft Access que la referencia al campo, "IdEmpleado", proviene de la forma actual. Si lo omite, Microsoft Access compara IdEmpleado consigo mismo en la tabla empleados y devuelve el apellido del primer registro en la tabla de empleados (el mismo resultado que si no especifica ningún criterio). Esto es porque el primer registro de la tabla empleados tiene un 1 en el campo EmployeeID, por lo que el argumento
   "[EmployeeID] = [EmployeeID]"

calcula a
   "1 = 1"

y, por tanto, sería el primer registro que coincide con los criterios.

Los criterios para los otros dos ejemplos se crean concatenando dos expresiones de cadena con un ampersand (&). En el tercer ejemplo, el criterio termina con una referencia de campo de formulario.

Cuando se están evaluando los criterios, primero las partes individuales de los criterios son evaluados y anexados o concatenados; a continuación, se calcula el valor completo.


Si el valor actual del campo IdEmpleado del formulario Pedidos es 7, la expresión del criterio original
   "[EmployeeID] = " & [EmployeeID]

se resolvería como
   "[EmployeeID] = " & 7

que, al concatenarse, se resuelve como:
   "[EmployeeID] = 7"

Si no especifica la referencia de forma completa (como en el segundo ejemplo), Microsoft Access supone que se hace referencia al formulario actual.

Este siguiente ejemplo es un derivado del tercer ejemplo anterior:
   =DLookUp("[LastName]", "Employees", _
"[EmployeeID] = Forms![Orders]![EmployeeID]")

En este ejemplo, se incluye la referencia de forma completa entre comillas de los criterios. En este caso, Microsoft Access busca correctamente el valor cuando el formulario se abre por primera vez, pero sólo hasta que se cambia el campo IdEmpleado por modificaciones a la adición de un registro o un registro. Microsoft Access no volverá a calcular automáticamente el nuevo valor de nombre último de empleado después de tales cambios. Para volver a calcular manualmente la expresión colocando el punto de inserción en el control y presionando la tecla F9.

Si desea que el campo se actualice automáticamente cuando cambie el criterio, que los criterios de una variable mediante el método de concatenar partes de la expresión como se describió anteriormente. Tenga en cuenta que cuando se mueven a un nuevo registro, el DLookupcuadros de texto () que se actualizan automáticamente tendrá "#Error" en ellos hasta que escriba algo en el cuadro de texto IdEmpleado.

Especificar criterios de texto:

Todos los ejemplos anteriores muestran cómo utilizar la función DBúsq() con criterios numéricos. Si los campos del criterio son texto, encierre el texto entre comillas simples, como en el ejemplo siguiente:
   =DLookUp("[Title]", "Employees", "[LastName] = 'Callahan'")

Tenga en cuenta que puede utilizar comillas dobles en lugar de comillas simples, aunque se prefieren entre comillas simples. Utilice comillas dobles para reemplazar una comilla simple. En el ejemplo siguiente utiliza comillas dobles y equivale al ejemplo anterior:
   =DLookUp("[Title]", "Employees", "[LastName] = ""Callahan""")

Especificar criterios de texto obtenidos de un campo de un formulario:

En el ejemplo siguiente se muestra cómo buscar el nombre del contacto de un cliente en el formulario de pedidos. El campo IdCliente es un campo de clave textual para los criterios, por lo que la instrucción de DLookup() es:

   =DLookup("[ContactName]", "[Customers]", _
"[CustomerID]='" & [CustomerID] & "'")

- o -
   =DLookup("[ContactName]", "[Customers]", _
"[CustomerID]='" & Forms![Orders]![CustomerID] & "'")

En el segundo ejemplo, los criterios se compone concatenando las tres partes de la expresión de cadena. La primera es "[IdCliente] = '", el segundo es el valor contenido en el campo IdCliente real y la tercera es la única comilla de cierre entre comillas dobles.

Cuando este criterio se evalúa, en primer lugar se evalúan las piezas individuales y sus resultados anexan o concatenan; a continuación, se calcula el valor completo.


Si el valor actual seleccionado en el cuadro combinado IdCliente del formulario Pedidos es Alfreds Futterkiste, la columna dependiente del cuadro combinado devuelve ALFKI para IdCliente. La expresión del criterio original
   "[CustomerID] = '" & [CustomerID] & "'"

se evalúa como
   "[CustomerID] = '" & "ALFKI" & "'"

que, al concatenarse, se evalúa como:
   "[CustomerID] = 'ALFKI'"

Especificar criterios de fecha:

Si los campos del criterio son valores de fecha u hora, incluya el valor de fecha u hora signos de número (#). Para encontrar a un empleado que cumpla años en una fecha determinada, utilice los siguientes criterios de ejemplo:
   =DLookUp("[LastName]", "Employees", "[BirthDate] = #01-27-66#")

Especificar múltiples campos en los criterios:

La expresión de criterios puede ser cualquier cláusula WHERE de SQL válida (sin la palabra clave DONDE). Esto implica que puede utilizarse más de un campo para especificar criterios para la función DBúsq().

Para buscar el IdPedido de uno de los pedidos vendidos por el empleado "Andrew Fuller", con un EmployeeID de 2 (numérico), para el cliente "bistro Simons", con un ID (texto), utilice la siguiente instrucción DBúsq() de ejemplo:
   =DLookUp("[OrderID]", "Orders", _
"[CustomerID] = 'SIMOB' And [EmployeeID] = 2")

Esta instrucción devuelve OrderID 10556, que es el primer IdPedido que coincide con los criterios. OrderID 10669 también cumple los criterios.

El ejemplo anterior utiliza valores de CustomerID y EmployeeID codificado de forma rígida o específicos. Para utilizar variables en lugar de valores específicos para los criterios, puede utilizar Visual Basic para Aplicaciones para concatenar varias expresiones de cadena. En el siguiente ejemplo de Visual Basic muestra este método:
   ' Declare the variables.
Dim CustID As String
Dim EmpID As Long
Dim Result

   ' Assign values to the variables to be used in the criteria.
CustID = "SIMOB"
EmpID = 2

   Result = DLookup("[OrderID]", "Orders", _
"[CustomerID] = '" & CustID & "' And [EmployeeID] = " & EmpID)

   MsgBox Result

Si la función DLookup ()es correcta, el resultado de variable contiene Null.

Tenga en cuenta que los criterios se compone de cuatro partes que se evalúan individualmente. Los resultados se anexa y, a continuación, se evalúan como un todo. La expresión del criterio original
   "[CustomerID] = '" & CustID & "' And [EmployeeID] = " & EmpID

se evalúa como
   "[CustomerID] = '" & "SIMOB" & "' And [EmployeeID] = " & 2

que, al concatenarse, se evalúa como:



   "[CustomerID] = 'SIMOB' And [EmployeeID] = 2"

Puede utilizar el siguiente ejemplo para encontrar a un empleado cuyo cumpleaños se celebre en la fecha de hoy:
   =DLookUp("[LastName]", "Employees", _
"Month([BirthDate]) = " & Month(Date) & " And Day([BirthDate]) _
= " & Day(Date))

Si hoy es el 2/12/93, la expresión del criterio original
   "Month([BirthDate]) = " & Month(Date) & " And Day([BirthDate]) = " _
& Day(Date)

se evalúa como
   "Month([BirthDate]) = " & 12 & " And Day([BirthDate]) = " & 2

que, al concatenarse, se evalúa como:
   "Month([BirthDate]) = 12 And Day([BirthDate]) = 2"

Sugerencias para solucionar problemas y depurar expresiones DBúsq()

Para solucionar problemas de expresiones, divídalas en componentes más pequeños y pruebe los componentes individualmente en la ventana Inmediato para asegurarse de que funcionan correctamente. Si estos componentes menores funcionan correctamente, usted puede reunirlos de nuevo juntos, pieza por pieza, hasta que la expresión final también funcione correctamente.

La ventana Inmediato es una herramienta que puede utilizar para ayudar a depurar los módulos de Visual Basic. Utilice la ventana Inmediato para probar y evaluar expresiones independientemente del formulario o la expresión de macro que se utilizará en. Puede crear expresiones en la ventana Inmediato, ejecutarlas y ver inmediatamente los resultados.

En el siguiente ejemplo muestra una estrategia para dividir la expresión () DBúsq (DLookup)en componentes más pequeños que se puedan probar en la ventana Inmediato. Supongamos que está teniendo dificultades con la siguiente instrucción:
   =DLookUp("[OrderID]", "Orders", _
"[CustomerID] = '" & Forms![MyForm]![CustomerID] _
& "' And [EmployeeID] = " & Forms![MyForm]![EmployeeID])

Tenga en cuenta que los criterios incluye varios campos en los criterios de búsqueda, uno de los cuales es numérico y uno de los cuales es textual.

Para solucionar esta expresión, pruebe lo siguiente:

  1. Presione CTRL+G para abrir la ventana Inmediato.
  2. Pruebe la función sin ningún criterio. Para ello, escriba lo siguiente en la ventana Inmediato y presione ENTRAR:
    ? DLookUp("[OrderID]", "Orders")
  3. Asegúrese de que las referencias del formulario son correctas. Para ello, abra el formulario pedidos en la base de datos de ejemplo Neptuno.mdb y escriba las líneas siguientes en la ventana Inmediato y presione ENTRAR:
    ? Forms![MyForm]![CustomerID]
    - y -
    ? Forms![MyForm]![EmployeeID]
  4. Intente conseguir el campos del criterio funcionen independientemente, los valores de codificación disco duros en la expresión. Para ello, escriba las líneas siguientes en la ventana Inmediato y presione ENTRAR:
    ? DLookUp("[OrderID]", "Orders", "[CustomerID] = 'SIMOB'")
    - y -
    ? DLookUp("[OrderID]", "Orders", "[EmployeeID] = 2)
  5. Intente conseguir que los campos del criterio funcionen independientemente con un parámetro de la consulta. Para ello, escriba cada una de las siguientes opciones en la ventana Inmediato y presione ENTRAR:
    ? DLookUp("[OrderID]", "Orders", _   "[CustomerID] = '" & Forms![MyForm]![CustomerID] & "'")

    - y -
    ? DLookUp("[OrderID]", "Orders", _   "[EmployeeID] = " & Forms![MyForm]![EmployeeID])

Referencias

Para obtener más información acerca de la DCont() y otras funciones de agregado de dominio, haga clic en
Ayuda de Microsoft Access en el menú Ayuda , escriba funciones de dominio en el Ayudante de Office o el Asistente para Ayuda y, a continuación, haga clic en Buscar para ver el tema.
Propiedades

Id. de artículo: 208786 - Última revisión: 8 ene. 2017 - Revisión: 1

Comentarios