ACC: DBúsq() uso de ejemplos y solución de problemas (95/97)

Seleccione idioma Seleccione idioma
Id. de artículo: 136122 - Ver los productos a los que se aplica este artículo
Principiante: Requiere conocimientos de la interfaz de usuario en equipos de usuario único.

Expandir todo | Contraer todo

En esta página

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 incluyen los temas siguientes:
  • Sintaxis y uso de la función DBúsq().
  • Los ejemplos siguientes de la función DBúsq():
        - A function with no criteria
        - Specifying numeric criteria
        - Specifying numeric criteria that comes from a field on a form
        - Specifying textual criteria
        - Specifying textual criteria that comes from a field on a form
        - Specifying date criteria
        - Specifying multiple fields in the criteria
    						
  • Sugerencias para solucionar problemas y depurar las expresiones DBúsq().
Tenga en cuenta que los problemas derivados muchos del uso de la función DBúsq() producen 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(), DPrim(), DÚltimo(), DMín(), DMáx() y DCont(). Por tanto, el material siguiente es útil para comprender las funciones agregado de dominio, así como la función DBúsq().

Más información

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

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

La sintaxis de la función DBúsq() es como sigue:
   DLookup(Expression, Domain [, Criteria])
				

La función tiene tres argumentos: la expresión, el dominio y los 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 criterios es una expresión de cadena opcional que se puede utilizar para restringir el intervalo de los datos que se ejecuta en la función DBúsq(). Observe que el argumento criterios es idéntico a la cláusula WHERE en una expresión SQL (excepto en que no utiliza la palabra clave WHERE).

La función DBúsq() 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 nulo.

Ejemplos de la función DBúsq()

Los ejemplos siguientes muestran cómo utilizar DBúsq() 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, un subrayado (_) al final de una línea se utiliza 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 DBúsq() en su forma más sencilla: sin especificar criterio alguno. El ejemplo devuelve el valor contenido en el campo Apellidos del primer registro de la tabla Empleados:
   =DLookUp("[LastName]", "Employees")
				

Especificar criterios numéricos:

Para buscar los apellidos del empleado con número de identificación 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 ocurre porque el valor del campo IdEmpleado en el primer registro de la tabla Empleados es 1, por lo que el argumento
   "[EmployeeID] = [EmployeeID]"
				

se resuelve como
   "1 = 1"
				

y por tanto sería el primer registro que cumpliría el criterio.

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 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.

El siguiente ejemplo deriva del tercero de los ejemplos anteriores:
   =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 cuando se mueve a un nuevo registro, los cuadros de texto DBúsq() que actualicen automáticamente tendrá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 DBúsq() con criterios numéricos. Si los campos de criterios de texto, encierre el texto entre comillas simples, como en el ejemplo siguiente:
   =DLookUp("[Title]", "Employees", "[LastName] = 'Callahan'")
				

Tenga en cuenta que también puede utilizar comillas dobles en lugar de comillas simples, aunque es preferible utilizar estas últimas. Utilice dos comillas dobles para reemplazar una comilla simple. El ejemplo siguiente utiliza comillas dobles y equivale al 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 DBúsq() es:
   =DLookup("[ContactName]", "[Customers]", _

      "[CustomerID]='" & [CustomerID] & "'")

   -or-

   =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 concatenarán, se calcula el valor todo.

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 (#). Por ejemplo, utilice el siguiente criterio si desea encontrar un empleado que cumpla años en una fecha determinada:
   =DLookUp("[LastName]", "Employees", "[BirthDate] = #01-27-66#")
				

Especificar múltiples campos en el criterio:

La expresión del criterio 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 la función DBúsq().

Para averiguar el OrderID para uno de los pedidos vendidos por empleado "Andrew Fuller", con un EmployeeID de 2 (numérico) para el cliente "bistro Simons", 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 el valor 10556 para IdPedido, que corresponde al primer IdPedido que coincide con el criterio. 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. 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 DBúsq() es incorrecta, el resultado de variable contiene un valor nulo.

Tenga en cuenta que los criterios se compone de cuatro partes que se evalúan individualmente. Los resultados se anexa, 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 que cumpla añ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 pruebe los componentes individualmente en la ventana depuración para garantizar que funcionan correctamente. Si los componentes más pequeños funcionan correctamente, se pueden colocar volver juntos, en parte por parte hasta que la expresión final funciona correctamente.

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

En el ejemplo siguiente se muestra una estrategia para dividir la expresión DBúsq() en componentes más pequeños que puede probar en la ventana depuración. Suponga que tiene dificultades para 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 los problemas de esta expresión, pruebe los siguientes pasos:
  1. Presione CTRL+G para abrir la ventana depuración.
  2. Pruebe la función sin ningún criterio. Para ello, escriba lo siguiente en la ventana depuración y presione ENTRAR:

    ? DLookUp("[OrderID]", "Orders")

    Microsoft Access realiza el cálculo y muestra el resultado en la línea siguiente en la ventana depuración.
  3. Asegúrese de que las referencias del formulario son correctas. Para ello, abra los pedidos forman en la base de datos de ejemplo Neptuno.mdb y escriba cada una de las líneas siguientes en la ventana depuración, presione ENTRAR:
          ? Forms![MyForm]![CustomerID]
    
          -and-
    
          ? 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 de depuración y, a continuación, presione ENTRAR:
          ? DLookUp("[OrderID]", "Orders", "[CustomerID] = 'SIMOB'")
    
          -and-
    
          ? 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 de depuración y, a continuación, presione ENTRAR:
          ? DLookUp("[OrderID]", "Orders", _
             "[CustomerID] = '" & Forms![MyForm]![CustomerID] & "'")
    
          -and-
    
          ? DLookUp("[OrderID]", "Orders", _
             "[EmployeeID] = " & Forms![MyForm]![EmployeeID])
    						

Referencias

Para obtener más información acerca de DLookup, busque "DLookup" y "Dlookup función" mediante el índice de Ayuda de Microsoft Access 97.

Para obtener información sobre cómo utilizar la función DLookUp() en Microsoft Access 2.0, consulte en contacto con el siguiente artículo en Microsoft Knowledge Base:

136460ACC2: Uso de DBúsq(), ejemplos y sugerencias de solución de problemas

Propiedades

Id. de artículo: 136122 - Última revisión: viernes, 19 de enero de 2007 - Versión: 3.1
La información de este artículo se refiere a:
  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition
Palabras clave: 
kbmt kbfaq KB136122 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): 136122
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

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