Dónde y Cómo utilizar la Función de Dominio DLookup

Te voy a enseñar como utilizar una de las funciones mas útiles de Access. DlookUp se llama función de dominio y es prima hermana de DSum y DCount, pero centrémonos en DlookUp. ¿Qué es, Para qué Sirve, como y donde la uso?.

Voy a intentar explicarlo:

¿Que es?

DlookUp es una Función predefinida de Access, como una fórmula a la que se le pasan ciertos datos y ella se encarga de hacer los cálculos necesarios y devolvernos el resultado ahorrándonos de esta manera un montón de pasos. Vale, te ha quedado muy Geek la explicación pero ¿Para que sirve esto?.

¿Para que sirve?

En un contexto sencillo sería como decirle “Búscame el campo X en la tabla Z que coincida con el criterio Y”, te sabe a poco ¿no?, Que tal con un ejemplo sencillo:

Tengo una tabla de artículos con tres campos “Codigo, Descripcion e Importe” y en alguna parte de nuestra base de datos queremos buscar el precio de un artículo concreto cuyo código es el 002568. ¿Ves, a que ahora es mas sencillo de entender? Pero aún queda por saber como y donde lo usamos, pues sigamos.

¿Como y Donde la uso?

El como, lo explicamos fácilmente, tomando el ejemplo anterior sería así: DlookUp (“Importe”, “T_Articulos”, “Codigo= 002568”) y ya está, la función es así de sencilla. Sobre como se debe de pasar el último dato del criterio a la función da para otro artículo mas extenso por tanto me lo reservo para un próximo post.

Vale, pero yo soy ateo, si no lo veo no me lo creo así que quiero verlo funcionar y ya que estamos me dices donde puedo usarla. Vale, pues como buena función de dominio que es, la podemos usar en varios apartados de nuestra base de datos como en un cuadro de texto calculado, una consulta, o con código VBA y como hoy estoy inspirado te voy a mostrar los tres ejemplos, así soy yo.

En un formulario

Antes de colocar nuestro campo calculado matizaremos un pequeño detalle que he obviado hasta este punto. La forma de llamar a la función es en Inglés “DlookUp”, sin embargo, esta forma solo se usa desde el editor de código VBA al igual que los separadores entre los datos “Parámetro” que le pasamos a la función van separados por comas “,” ahora bien, si utilizamos la función en un formulario, aunque la escribamos como te la he enseñado “DlookUp” el la convertirá automáticamente al español “Dbúsq” y las “,” deberás sustituirlas por “;” esto último a mano porque no lo hace en automático.

Pues a lo que iba, tenemos un formulario en blanco, en mi caso sin orígenes de datos con dos campos de texto, uno para poner el código y el otro para que lo calcule con nuestro DlookUp, aquí tienes la vista diseño del mismo

Nota del autor: Se puede observar que el último parámetro “Codigo= ‘” & [txtCodigo] & “‘” que actúa de filtro de la función utiliza para construirlo comillas simples y el símbolo & y no he explicado el motivo de ambos pero como la construcción de filtros da para una entrada nueva me la reservo para la misma que estoy redactando. En breve la tendréis disponible. Estad atentos.

Como ves el último dato “parámetro” del criterio lo que hace es leer lo que aparece en el primer cuadro de texto. Aunque el ejemplo es muy simple, si cambiamos el código del primer cuadro de texto no buscará automáticamente su importe, en este caso he añadido, a su evento “Después de actualizar”, la siguiente línea mediante VBA “Me.Recalc” para que vuelva a recalcular los cambios:

Curso-Access-Basico

En una consulta

Definir ahora mismo un ejemplo práctico en una consulta con la única tabla que tengo de ejemplo me parece complicado pues una consulta en si ya será capaz de realizar el cálculo que necesitamos sin mayor complicación, no obstante pondré el ejemplo, aunque hora mismo carezca de sentido y verás como tarde o temprano le encuentras utilidad.

He realizado una consulta con origen de datos la tabla “T_Articulos” y he añadido un campo calculado “Precio”, insisto en que este ejemplo carece de sentido, lo que importa es que veas que en una consulta también se pueden utilizar las funciones de dominio:

Esto daría, en mi caso, el siguiente resultado:

Pues ala, ya hemos terminado el tutorial.

Huy, tenías que haber visto la cara que se te acaba de quedar, veeeenga que no se ha acabado el tutorial sigo con el último ejemplo.

Por Código VBA

Voy a usar el formulario del primer ejemplo pero en vez de hacer el cálculo directamente en el cuadro de texto, mediante código VBA voy a recoger el código del artículo del primer cuadro de texto, a continuación voy a buscar su importe mediante DlookUp y por último lo voy a copiar en el segundo cuadro de texto de mi formulario.

Vamos allá:

En el evento “Después de actualizar” del  primer cuadro de texto, al que le he puesto de nombre “txtCodigo” pongo este código:

Nótese que ahora, por código, se mantiene la sintaxis en Inglés (DlookUp) y se utiliza como separador de parámetros la “,”.

Con esto y  un bizcocho, hasta mañana a las ocho.

Estudió formación profesional en la rama de electrónica hasta que descubrió el apasionante mundo de los ordenadores personales. Desde entonces, la administración de bases de datos, hojas de cálculo y programación en Microsoft Visual Basic para aplicaciones le han acompañado hasta el día de hoy. En estos momentos, su principal interés está enfocado a portabilizar las bases de datos a dispositivos móviles Windows e IOS, en entornos cliente servidor, enfocado en desarrollos con Microsoft Access, FileMaker y Servidores en la nube como Microsoft SQL Azure.

8 Comments

  1. Responder saul

    Eso es falso ya que si al campo txt importe le pones que es igual a “DLookup(“importe…”) y el campo txtimporte tiene un valor NULO te saldra un error diciendo que el campo txtprecio no es igual a dlookup(…) ya que seria igual a txtimporte=Nulo
    aparte access no acepta el caracter “;” sino el de “,”

    • Responder @angilmen

      Obviamente si le das a buscar, en este caso, el importe de un artículo que está vacío, como no lo encuentra devolverá un error. Pero sobre la gestión de errores no he hablado en este post que pretende resumir el uso de la función. No obstante, tomo nota de tu comentario y lo dejo pendiente, bien para ampliar este artículo o bien hacer uno nuevo exclusivamente para la gestión de errores.

      Respecto al uso del carácter “,” o “;” supongo que te referías a la última línea de mi post donde cometí un error tipográfico ya corregido. Como había matizado en formularios, consultas e informes, se utiliza como separador el “;”, sin embargo cuando escribimos las funciones en el editor de código VBA hay que utilizar la “,”

      Gracias por las correcciones.

  2. Responder Armando

    Muchas gracias por la explicacion, me ha ayudado a darme una idea practica para poder indicar si una factura esta duplica, porque tengo dos combos y no sabia como hacerle..

    saludos

  3. Responder Javier

    Hola
    Tengo el siguiente problema: Se ha producido el error ‘3464’ en tiempo de ejecución No coinciden los tipos de datos en la expresión de criterios.

    Agradezco si me orienta de como resolver el problema:
    If (IsNull(DLookup(“[Id_Detalle]”, “[123456]”, “[Id_Detalle]='” & Me.txt_Id_Detalle.Value & “‘”))) Then

    Tabla: Id_Detalle => Autonumeración => Entero Largo
    Formulario txt_Id_Detalle => Número general

  4. Responder Angel

    Cuál sería la expresión para utilizar como criterio una columna de la consulta donde se usa la función dbusq y busque en una tabla definida.

  5. Responder gustavo

    hola, una duda con este codigo si yo quisiera buscar el importe pero que se cumplan dos criterios, o sea en una tabla de articulos buscar un importe por codigo y año como se podria realizar? Desde ya muchas gracias.-

Deja un comentario

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR