Access - Duda en la función dcount

 
Vista:
sin imagen de perfil

Duda en la función dcount

Publicado por Javier (71 intervenciones) el 06/04/2017 18:36:08
Hola foreros , estoy utilizando esta expresión para contabilizar el número de estudiantes que hay en un grupo académico, para que apareza en un textbox, para ello en la sección del textbox : origen de control tengo aplicada la siguiente expresión:

=DCont("[NIVEL 1º IDIOMA]";"[ALUMNOS]";"[NIVEL 1º IDIOMA] = 'ADULTOS' ")

y me lo hace correctamente,siempre y cuando se lo diga por escrito como se llama el curso en este caso ADULTOS.

Mi pregunta es como puedo decirle que el criterio sea uno de mis textbox del formulario, concretamente uno que se llama:NOMBRE DEL CURSO.

Aguien puede ayudarme?

PD: He realizado esta función con expresiones, si pensáis que es mejor con código vba a mi no me importa

GRACIAS ESPERO ESA RESPUESTA
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Duda en la función dcount

Publicado por Anonimo (3312 intervenciones) el 06/04/2017 19:56:19
Sencillo y paso a paso partiendo de la expresion que ya funciona:

En base a la original: =DCont("[NIVEL 1º IDIOMA]";"[ALUMNOS]";"[NIVEL 1º IDIOMA] = 'ADULTOS' ")

Eliminamos la constante (adultos)
=DCont("[NIVEL 1º IDIOMA]";"[ALUMNOS]";"[NIVEL 1º IDIOMA] = ' _________ ' ")

Y cerramos las dos expresiones de texto con las clasicas dobles comillas
=DCont("[NIVEL 1º IDIOMA]";"[ALUMNOS]";"[NIVEL 1º IDIOMA] = '" __________ "' ")

Añadimos el concatenador a cada lado
=DCont("[NIVEL 1º IDIOMA]";"[ALUMNOS]";"[NIVEL 1º IDIOMA] = '" & ___________ & "' ")

Solo queda indicarle el nombre del objeto que sera la variable (nombre del curso)
=DCont("[NIVEL 1º IDIOMA]";"[ALUMNOS]";"[NIVEL 1º IDIOMA] = '" & [NOMBRE DEL CURSO] & "' ")


Habra que indicarle que se actualice al cambiar el valor en el TexBox (en su evento 'despues de actualizar' o similar)

Nota: He añadido marcadores para hacerlo mas visible, los espacios los comprime el foro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Duda en la función dcount

Publicado por Javier (71 intervenciones) el 07/04/2017 18:43:28
muy buena tu explicación, funciona de diez , mil gracias y un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Duda en la función dcount

Publicado por Javier (71 intervenciones) el 11/04/2017 13:59:50
me ha surgido una nueva duda,partiendo de la consulta:

=DCont("[NIVEL 1º IDIOMA]";"[ALUMNOS]";"[NIVEL 1º IDIOMA] = '" & [NOMBRE DEL CURSO] & "' ")

que sabemos que funciona,

como podemos incluir un campo 2º idioma, que tambien se cuente es decir si ponemos en nivel 1 idioma ADULTOS Y EN NIVEL 2º IDIOMA ADULTOS, que el contador me diga que hay 2 alumnos se hace con or??

espero sus respuestas




PD: He probado con :

=DCont("[NIVEL 1º IDIOMA]";"[ALUMNOS]";"[NIVEL 1º IDIOMA] = '" & [NOMBRE DEL CURSO] & "' ")=DCont("[NIVEL 2º IDIOMA]";"[ALUMNOS]";"[NIVEL 2º IDIOMA] = '" & [NOMBRE DEL CURSO] & "' ")

es decir he puesto por dos, he duplicado la 1º funcion pero cambiando el campo de nivel 1 idioma a s2 idioma

fucniona pero el contador empieza por -1 ¿alguna idea?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Duda en la función dcount

Publicado por Norberto (753 intervenciones) el 11/04/2017 15:21:37
Hola.

Al poner =DCont(...) = DCont(...) lo que estás haciendo es:
Se calcula el número de registros que cumplen la primera condición
Se calcula el número de registros que cumplen la segunda condición
Se evalúa si los dos números son iguales (has usado = como operador entre las dos expresiones)
Si son iguales devuelve True (-1) y si no lo son, devuelve False (0)

Si lo que quieres es sumar ambos valores, deberás usar =DCont(...) + DCont(...). Si quieres que cuente los que cumplan todas las condiciones o al menos una de ellas, deberás usar un solo DCount, indicando como criterio las dos condiciones separadas por Y u O, respectivamente.

=DCont("*";"[ALUMNOS]";"[NIVEL 1º IDIOMA] = '" & [NOMBRE DEL CURSO] & "' Y [NIVEL 2º IDIOMA] = '" & [NOMBRE DEL CURSO] & "'")

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda en la función dcount

Publicado por Anonimo (3312 intervenciones) el 11/04/2017 18:50:01
Aclarando algunos puntos ....
La función DCount cuenta, pero cuenta registros no campos de registros o valores en ellos, que tenga tres parámetros es por simple compatibilidad con el resto de las funciones de dominio.
Es por ello que si en lugar de un campo (o cualquier otro dato) se le pone un asterisco (que representa la ambigüedad), se cumple con el requisito de utilizar ese parámetro (que no precisa, pero ha de estar presente).

En base a ello, la expresión original (que funcionaba de forma correcta):
=DCont("[NIVEL 1º IDIOMA]";"[ALUMNOS]";"[NIVEL 1º IDIOMA] = '" & [NOMBRE DEL CURSO] & "' ")

Se podría escribir asi para obtener el mismo (idéntico) resultado:
=DCont("*";"[ALUMNOS]";"[NIVEL 1º IDIOMA] = '" & [NOMBRE DEL CURSO] & "' ")


Si se entiende lo anterior, se podrá llegar al punto que nos permite resolver el problema .... se cuentan registros que cumplan una condición (o dos, o tres o ....).

Asi que podemos utilizar como condición aquello que nos interese, en este caso que cumpla dos condiciones y se puede definir o solicitar que cumpla ambas o una cualquiera de ellas (AND = todas, OR = una u otra)

Pero atención, cuenta registros, asi pues si uno de los registros cumple ambas solo se sumara una unidad (un registro) y si tan solo cumple una de ellas, también será sumada una unidad.

Una condición: [NIVEL 1º IDIOMA] = '" & [NOMBRE DEL CURSO] & "'"
Una segunda : [NIVEL 2º IDIOMA] = '" & [NOMBRE DEL CURSO] & "'"

Si tiene que cumplir ambas:
"[NIVEL 1º IDIOMA] = '" & [NOMBRE DEL CURSO] & "' AND [NIVEL 2º IDIOMA] = '" & [NOMBRE DEL CURSO] & "'"

Si es suficiente con cumplir cualquiera de ellas:
"[NIVEL 1º IDIOMA] = '" & [NOMBRE DEL CURSO] & "' OR [NIVEL 2º IDIOMA] = '" & [NOMBRE DEL CURSO] & "'"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Duda en la función dcount

Publicado por Javier (71 intervenciones) el 12/04/2017 12:55:54
GRACIAS AMIGOS, me ha funcionado esta:

=DCont("*";"[ALUMNOS]";"[NIVEL 1º IDIOMA] = '" & [NOMBRE DEL CURSO] & "' OR [NIVEL 2º IDIOMA] = '" & [NOMBRE DEL CURSO] & "'")

esta funciona como la seda para lo que necesito, muchas gracias también por la explicación
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Gracias por el comentario

Publicado por El jinete sin cabeza (1 intervención) el 25/11/2021 13:10:58
4 años después y aun sigue haciendo mas fácil muchas vidas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar