Agradezco tus comentarios

Me encantaría conocer tus impresiones acerca de los distintos ejemplos o artículos de este blog, si te es posible deja un comentario en mi libro de visitas. En cambio para preguntas o problemas con alguno de los ejemplos, te ruego me las formules en el foro de Access en grupos Emagister o en en el foro de Access y VBA.

sábado, 5 de enero de 2008

CAPITULO 4.- FUNCIONES AGREGADAS DE DOMINIO

Cuando uno empieza a desarrollar sus aplicaciones, se nos suele atragantar el acceder a los datos de las tablas que se encuentran cerradas. Una de las maneras más sencillas es con las funciones
agregadas de dominio.

Prácticamente todas ellas son muy similares:

NombredelaFuncion("Campodelatabla","Tabla","Condicion")

Para este capitulo vamos a crear una tabla que vamos a llamar Clientes con los siguientes campos:

IdCliente (Autonumérico)

NombreCliente (Texto)

DNICliente (Texto)

FechaNacimiento (Fecha/Hora)

Edad (Numero)


Escribimos tres o cuatro registros inventados para hacer pruebas.


Ahora creamos un formulario independiente, con un simple cuadro de texto, que vamos a llamar txtResultados, y un botón de comando.

Vamos a comenzar por intentar averiguar cuantos registros tenemos en nuestra tabla y para ello vamos a usar la función agregada de dominio DCount.


Como decía antes sería algo así como DCount("CampodelaTabla","Tabla","Condicion"),
pero para este primer ejemplo no vamos a poner ninguna condición con lo que nos quedaría así: DCount("IdCliente","Clientes")

Ahora vamos a aplicarlo, en el evento al hacer click del botón de comando de nuestro formulario ponemos:


Me.txtResultados = DCount("IdCliente","Clientes")

Si hacemos click en el botón, nos aparecerá en nuestro cuadro de texto el número de registros de la tabla.

Como todas son muy parecidas, ahora vamos a ver DSum, vamos a sumar las edades de todos nuestros clientes, para ello en el botón de comando borramos lo que teníamos y ponemos:


Me.txtResultados = DSum("Edad","Clientes")


Bueno...fácil...¿verdad?


Vamos a obtener el promedio de edad de nuestros clientes, para ello divideremos la suma de sus edades entre el número de clientes


Me.txtResultados = DSum("Edad","Clientes") / DCount("IdCliente","Clientes").

Funciona. Pero Access incluye una función para calcular el promedio, se trata de Avg. Probamos ahora poniendo


Me.txtResultados = DAvg("Edad","Clientes")


Y obtendremos el mismo resultado que antes.

Ahora vamos a descubrir que edad es la más alta de todas las de la tabla. Utilizaremos DMax


Me.txtResultados = DMax("Edad","Clientes")

La menor de todas con DMin


Me.txtResultados = DMin("Edad","Clientes").


Vamos a introducir condiciones, y a conocer DLookUp. Esta función nos sirve para encontrar un campo en una tabla. El objetivo va a ser conocer el nombre del cliente que tengamos en la tabla cuyo IdCliente sea igual a 3.


La condición sería "IdCliente = 3"


Por tanto como lo que buscamos es el nombre del cliente quedaría así:

DLookUp("NombreCliente","Clientes","IdCliente = 3")


Lo ponemos ahora en el botón de comando


Me.txtResultados = DLookUp("NombreCliente","Clientes","IdCliente = 3")


Al hacer click, obtendremos el cliente que se corresponda con el numero 3.


Bien, ahora vamos a poner otro campo de texto en nuestro formulario al que vamos a llamar txtCondicion


Ahora vamos a repetir el ejercicio anterior pero en este caso en vez de utilizar el número 3, utilizaremos el valor del campo txtCondicion. Esta parte de las condiciones es la que se suele atragantar a todo el mundo, pero si lo comprendes bien, verás que en el fondo es sencillo, simplemente respetar la sintaxis para que Access lo entienda.


A la función, la condición se la pasamos como una cadena. Por ello antes de entrar de lleno en el tema, vamos a ver como concatenar cadenas, básicamente sería algo así como cadena1 & cadena2


Por ejemplo pon en el botón de comando lo siguiente:


Me.txtResultados = "Esta mañana" & "hace mucho calor"

Al hacer click nos aparecerán ambas frases concatenadas, lógicamente solo es un ejemplo, porque podríamos haber puesto el texto entero. Pero para el propósito de entenderlo sirve. Vemos que se han concatenado pero ha quedado así Esta mañanahace mucho calor. Vamos pues a ponerle un espacio entre una frase y la otra.


Me.txtResultados = "Esta mañana " & "hace mucho calor"


Ahora sí, ha quedado perfecto. Vale, pues volviendo a la condición que hay que pasarle a las funciones de dominio debe ser una cadena que la función pueda entender.


Antes poníamos una condición que era "IdCliente = 3"


Como veíamos antes sería lo mismo que poner:


"IdCliente= " & "3"


Ahora lo que queremos es que IdCliente sea Igual a lo que pongamos en el campo txtCondicion, por tanto sustituimos "3" por Me.txtCondicion y quedaría así:


"IdCliente= " & Me.txtCondicion

Y ahora ya escribimos todo entero:


Me.txtResultados = DLookUp("NombreCliente","Clientes","IdCliente= " & Me.txtCondicion)


Esta sintaxis funcionará correctamente siempre y cuando el campo variable sea un número.

Pero la sintaxis varía si el campo variable es un texto o una fecha, vamos a suponer que lo que buscamos es: introduciendo el nombre de nuestro cliente obtener su edad , para ello la función sería


Me.txtResultados = DLookUp("Edad","Clientes","NombreCliente= '" & Me.txtCondicion & "'")

Como vemos al tratarse el campo variable de un texto nuestra forma de decírselo es poniéndolo entre comillas simples y dobles.

Por último si se trata de una fecha, debemos ponerlo entre almohadillas, por ejemplo queremos saber el nombre de un cliente poniendo su fecha de nacimiento en el cuadro de texto txtCondicion.


Me.txtResultados = DLookUp("NombreCliente","Clientes","FechaNacimiento= #" &
Me.txtCondicion & "#")

En principio esta sintaxis sería correcta, pero ya sabemos que VBA entiende las fechas en formato americano, por tanto para estar seguros de hacerlo bien le aplicamos a txtCondicion la función Format. Sería así:

Format(Me.txtCondicion,"mm/dd/yyyy"). Por tanto quedaría:


Me.txtResultados = DLookup("NombreCliente", "Clientes", "FechaNacimiento= #" &
Format(Me.txtCondicion, "mm/dd/yyyy") & "#")

Como podrás comprobar es una simple cuestión de sintaxis, pero en el fondo es muy fácil


CAPITULO 3.- LAS VARIABLES.

4 comentarios:

  1. Buenas tardes, me parece un gesto muy noble de tu parte explicar paso a paso estos ejemplos paar que podamos entenderlos, pero a mi no me funcionan, no se que estoy haciendo mal.

    ResponderEliminar
  2. De corazon te quiero felicitar por tan exelentes tutoriales, no sabes lo que me han servido ...
    De nuevo te doy la Gracias y que Dios te Vendiga

    ojala y sigas enseñandonos bastante.
    Juan Davida Agudelo

    ResponderEliminar
  3. Muchísimas gracias.
    Este "tutorial" es lo mejor que he encontrado al respecto.
    Como decimos en mi tierra "moltes gràcies".

    ResponderEliminar
  4. excelente blog, me parece genial como lo has expuesto, hubiera querido encontrarlo antes, cuando no lo habia descubierto con mis propios errores, jajajjaja Saludos y sigue adelante.

    ResponderEliminar