Access de Xavi
Bienvenido(a), Visitante. ¿Que quieres hacer? ingresar o registrarse.
¿Perdiste tu email de activación?
Septiembre 10, 2010, 05:25:12
Registrate para acceder a las áreas restringidas

Ingresar con nombre de usuario, contraseña y duración de la sesión
Buscar:     Búsqueda Avanzada
Debido a la intrusión de spammers, se ha desactivado la posibilidad de introducir mensajes. Tambien se han baneado las IP's con múltiples usuarios. Si algún usuario 'legal' ha resultado afectado, que me lo comunique (seguro que encuentra la forma)
505 Mensajes en 445 Temas por 1504 Usuarios
Último usuario: slentelvilalp
* Inicio Ayuda Ingresar Registrarse
+  Access de Xavi
|-+  Access: Por temas
| |-+  Funciones propias
| | |-+  Funciones de dominio agregado: DCount
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Funciones de dominio agregado: DCount  (Leído 3655 veces)
xavi
Administrador
*****
Sexo: Masculino
Mensajes: 442



« en: Junio 16, 2008, 16:43:10 »

Palabras clave:Funciones, DCount, contar
Autor: Xavi



Es una pregunta recurrente en los foros cómo contar los registros que cumplen una/s determinada/s condicion/es. Los programadores, que son muy ingeniosos, no paran de inventar formas de contar esa cantidad de registros. Algunas de esas formas se basan en abrir un recordset sobre el conjunto de registros y, o bien mirar la cuenta de registros devueltos, o bien haber generado la consulta con un Count dentro. En el fondo todo se puede simplificar con la utilización de las propias funcioanes de Access: DCount.

DCount (o DCont cuando se utiliza desde el generador de expresiones) nos permite contar cualquier campo de cualquier origen (tabla o consulta) dónde se cunplan determinados criterios.

La sintaxis de DCount es la siguiente:

DCount(uncampo, unorigen[, unoscriterios])

- uncampo: puede ser cualquier campo contenido en el origen de los datos, aunque lo más adecuado (y que no produce errores) es utilizar el caracter comodin *: Dcount("*"....
- unorigen: puede ser una tabla o una consulta. Podemos utilizar su nombre (entre comillas) o una variable: DCount("*", "TablaClientes"....
- unoscriterios: aqui es dónde, habitualmente, se lia la cosa. Si no ponemos nada, Access contará todos los registros del origen indicado. Los criterios son como una clausula WHERE de una SQL sin la palabra WHERE. Asi, si queremos filtrar los clientes cuyo campo CodVendedor sea 1, podemos utilizar esta condición: CodVendedor = 1 con lo que la expresión quedaria así:

DCount("*", "TablaClientes", "CodVendedor = 1")

Ahora queremos añadir un segundo criterio: los que su provincia sea Barcelona. Deberemos añadir esa condición a la existente, intercalando la palabra clave AND: "CodVendedor = 1 AND Provincia = 'Barcelona'" con lo que la expresiñon quedaria así:

DCount("*", "TablaClientes", "CodVendedor = 1 AND Provincia='Barcelona'")

Observese que el criterio de provincia se ha colocado entre apostrofes(') puesto que estamos tratando con un campo alfanumérico.

Añadamos un tercer criterio: los que empiecen por A. Añadimos otra condición (intercalando igualmente AND): "CodVendedor = 1 AND Provincia='Barcelona' AND Nombre Like 'A*'" con lo que quedaria así:

DCount("*", "TablaClientes", "CodVendedor = 1 AND Provincia='Barcelona' AND Nombre Like 'A*'")

Vamos a dar una vuelta de tuerca más y veamos como hacer que esos criterios se basen en controles del propio formulario dónde se ejecuta el código. Imaginemos tener un combo con los códigos y nombres de los vendedores (cboVendedor) y otro combobox con los nombres de las provincias (cboProvincias). Imaginemos también un TextBox dónde el usuario pueda teclear los carácteres con los que debe empezar el nombre del cliente (txtNombre).

DCount("*", "TablaClientes", "CodVendedor = " & Me!cboVendedor & " AND Provincia='" & Me!cboProvincia & "' AND Nombre Like '" & me!txtNombre & "*'")

Observese que simplemente hemos sustituido los valores fijos que teniamos en las expresiones anteriores por referencias a los controles pertinentes.

Y eso es todo (de momento) sobre el DCount.
En línea
Páginas: [1] Ir Arriba Imprimir 
« anterior próximo »
Ir a:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.2 | SMF © 2006-2007, Simple Machines LLC XHTML 1.0 válido! CSS válido!