https://accessjuancots.blogspot.com/2008/01/capitulo-4-funciones-agregadas-de.html
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:
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:
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:
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
Funciona. Pero Access incluye una función para calcular el promedio, se trata de Avg. Probamos ahora poniendo
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
La menor de todas con DMin
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í:
Lo ponemos ahora en el botón de comando
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:
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.
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:
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í:
Y ahora ya escribimos todo entero:
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
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.
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:
Como podrás comprobar es una simple cuestión de sintaxis, pero en el fondo es muy fácil