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

Seleccione idioma Seleccione idioma
Id. de artículo: 208786 - Ver los productos a los que se aplica este artículo
Si es usted un usuario de la edición para pequeñas empresas, podrá encontrar información adicional sobre la solución de problemas y recursos de aprendizaje en el sitio Support for Small Business (soporte para pequeñas empresas).
Principiante: Requiere conocimientos de la interfaz de usuario en equipos de usuario único.

Este artículo hace referencia 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 obtener una versión de Microsoft Access 97 de este artículo, consulte 136122.
Expandir todo | Contraer todo

En esta página

Resumen

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

En este artículo se incluyen los temas siguientes:

  • La sintaxis de función de DLookup () y el uso.
  • DLookup () función de los 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 el criterio
  • Sugerencias para solucionar problemas y depurar expresiones de DLookup ().
Tenga en cuenta que los problemas derivados muchos del uso de la función DLookup () producen no configurar y proporcionar correctamente la expresión de criterios. La expresión de criterios es común a muchos otro agregado funciones de (totales), tales como ( DSum ), DFirst (), DÚltimo (), DMin (), () DMax y ( DCount ). Por tanto, el material siguiente es útil para comprender las funciones agregado de dominio, así como la función DLookup ().

Más información

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

Puede utilizar la función de () DBúsq en una expresión o en un 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 como sigue:
   DLookup(Expression, Domain [, Criteria])
				
la función tiene tres argumentos: expresión , dominio y criterios. (Observe que el argumento criterios es opcional).

Utilice el argumento de expresión para identificar el campo que contiene los datos en el dominio que desea que devuelva o para realizar cálculos con los datos de ese campo.

El argumento de dominio es el nombre del conjunto de registro 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 se realiza la función DLookup () en. Tenga en cuenta que el argumento criterios es idéntico a la cláusula WHERE en una expresión SQL (excepto que no utilice la palabra clave WHERE ).

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

Ejemplos de la función DBúsq()

Los ejemplos siguientes muestran cómo puede utilizar () DBúsq (DLookup) para encontrar o devolver los 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 siguiente, se utiliza un subrayado (_) al final de una línea como un carácter de continuación de línea. Quite el carácter de subrayado del final de la línea cuando escriba esta expresión.

Una función sin criterios:

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

Especificar criterios numéricos:

Para buscar los apellidos del empleado cuyo 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 siguientes ejemplos muestran cómo especificar un criterio obtenido de otro campo del formulario actual. Puede probar estos ejemplos en el formulario Pedidos de 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, Forms! [IdEmpleado] aparece dentro de comillas de criterios. "Formulario" indica Microsoft Access que la referencia de campo, "IdEmpleado", procede del formulario actual. Si lo omite, Microsoft Access compara IdEmpleado consigo mismo en la tabla Empleados y devuelve el apellido del primer registro de dicha tabla (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 tanto, el argumento
   "[EmployeeID] = [EmployeeID]"
				
calcula para
   "1 = 1"
				
y, por lo tanto, sería el primer registro que coincide con los criterios.

Los criterios para los otros dos ejemplos se realizan mediante la concatenación de dos expresiones de cadena con una y comercial (&). En el tercer ejemplo, el criterio termina con una referencia a un campo de un formulario.

Al evaluar los criterios, primero las partes individuales de los criterios se evalúa y anexa o concatenan; a continuación, el valor entero se calcula.

Si el valor actual en el campo IdEmpleado en el formulario Pedidos es 7, la expresión del criterio original
   "[EmployeeID] = " & [EmployeeID]
				
podría calcular para
   "[EmployeeID] = " & 7
				
que, al concatenarse, se calcula a:
   "[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.

El ejemplo siguiente es un derivado del tercer ejemplo anterior:
   =DLookUp("[LastName]", "Employees", _
      "[EmployeeID] = Forms![Orders]![EmployeeID]")
				
en este ejemplo, la referencia de forma completa está incluida dentro de comillas de criterios. En este caso, Microsoft Access busca correctamente el valor al abrir el formulario por primera vez, pero sólo hasta que se cambia el campo IdEmpleado al modificar un registro o agregar un nuevo registro. Volver a Microsoft Access no calcular automáticamente el nuevo empleado último nombre de valor después de tal un cambio. Si desea volver a calcular manualmente la expresión, coloque el punto de inserción en el control y presione F9.

Si desea que el campo se actualice automáticamente cuando cambie el criterio, haga que el criterio sea una variable; para ello, concatene las partes de la expresión como se describió anteriormente. Tenga en cuenta que al mover a un nuevo registro, el DLookup cuadros de texto () esa actualización automáticamente mostrarán "# 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 DLookup () con criterios numéricos. Si los campos de criterios de texto, encierre el texto entre comillas simples, como en el siguiente ejemplo:
   =DLookUp("[Title]", "Employees", "[LastName] = 'Callahan'")
				
tenga en cuenta que puede utilizar comillas dobles en lugar de comillas simples, aunque las comillas simples son preferidas. Utilice dos comillas dobles para reemplazar una comilla simple. En el ejemplo siguiente se utiliza comillas dobles y equivale del ejemplo anterior:
   =DLookUp("[Title]", "Employees", "[LastName] = ""Callahan""")
				

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

El siguiente ejemplo muestra cómo encontrar el nombre del contacto de un cliente en el formulario 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 bien -
   =DLookup("[ContactName]", "[Customers]", _
      "[CustomerID]='" & Forms![Orders]![CustomerID] & "'")
				
En el segundo ejemplo, los criterios se compone concatenando tres piezas de expresión de cadena. La primera es "[IdCliente] = '", la segunda es el valor que aparece en el campo IdCliente real y la tercera es la comilla simple de cierre que aparece entre comillas dobles.

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

Si el valor seleccionado actualmente en el cuadro combinado IdCliente del formulario Pedidos es Alfreds Futterkiste, la columna enlazada con el cuadro combinado devuelve el valor 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 corresponden a valores de fecha u hora, incluya su valor entre signos de número (#). Para buscar un empleado cuyo cumpleaños se encuentra en una fecha determinada, utilice los criterios de ejemplo siguientes:
   =DLookUp("[LastName]", "Employees", "[BirthDate] = #01-27-66#")
				

Especificar múltiples campos en el criterio:

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

Para buscar el IdPedido para uno de los pedidos vendidos por empleado "Andrew Fuller", con un EmployeeID de 2 (numérico), de cliente "Simons bistro" con un CustomerID de SIMOB (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. El IdPedido con el valor 10669 también cumple el criterio.

El ejemplo anterior utiliza valores fijos (incluidos en el código) para IdCliente e IdEmpleado. Si desea utilizar variables en lugar de valores para dichos criterios, puede utilizar Visual Basic para Aplicaciones con el fin de concatenar varias expresiones de cadena. En el ejemplo de Visual Basic siguiente se 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 incorrecta, el resultado de variable contiene un valor null .

Tenga en cuenta que los criterios se compone de cuatro partes que se evalúan individualmente. El resultado se anexa y, a continuación, se evalúa 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 un empleado cuyo entra de cumpleaños 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 las expresiones DBúsq()

Para solucionar problemas de expresiones, dividir la expresión en componentes más pequeños y, a continuación, comprobar los componentes de forma individual en la ventana inmediata para asegurarse de que funcionan correctamente. Si todos estos componentes menores funcionan correctamente, puede reunirlos de nuevo, uno a uno, 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 va a utilizar en. Puede crear expresiones en la ventana Inmediato, ejecutarlas y ver el resultado al instante.

En el ejemplo siguiente se muestra una estrategia para dividir la expresión DLookup () en componentes más pequeños que puede probar en la ventana Inmediato. Suponga que está teniendo dificultades con la siguiente instrucción:
   =DLookUp("[OrderID]", "Orders", _
      "[CustomerID] = '" & Forms![MyForm]![CustomerID] _
      & "' And [EmployeeID] = " & Forms![MyForm]![EmployeeID])
				
nota que los criterios incluye varios campos en los criterios de búsqueda, uno de los cuales es numérica y uno de los cuales es textual.

Para solucionar los problemas de esta expresión, pruebe los siguientes pasos:

  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 de la base de datos de ejemplo Neptuno.mdb y escriba cada una de las líneas siguientes en la ventana inmediata y presione ENTRAR:
    ? Forms![MyForm]![CustomerID]
    					
    - y -
    ? Forms![MyForm]![EmployeeID]
    					
  4. Intente conseguir los campos del criterio funcionen independientemente por valores de codificación de disco duros en la expresión. Para ello, escriba cada una de las líneas siguientes en la ventana inmediata 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 en la consulta. Para ello, escriba cada uno de los siguientes en la ventana inmediata 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 agregado de dominio, haga clic en Ayuda de Microsoft Access en el menú Ayuda , escriba las funciones de dominio en el Ayudante de Office o en 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: miércoles, 17 de abril de 2013 - Versión: 2.1
La información de este artículo se refiere a:
  • Microsoft Access 2000 Standard Edition
Palabras clave: 
kbmt kbtshoot kbprogramming kbfunctions kbdta kbhowto KB208786 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 208786

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com