Access, Excel, VBA y más

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:

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:

Private Sub txtCodigo_AfterUpdate()

' Primero creo una variable donde capturar el código
' del primer cuadro de texto.
Dim sCodigo As String
sCodigo = Me.txtCodigo

' Busco dicho código en la tabla T_Articulos
' y lo asigno directamente al segundo cuadro de texto
Me.txtImporte = DLookup("Importe", "T_Articulos", "Codigo='" & sCodigo &"'")

End Sub

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.

Salir de la versión móvil