|
xavi
|
 |
« 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.
|