Suma en Access

Hola, tengo una base de datos de una escuela de conducta, esta la tienen dividida en faltas de tipo cívico y faltas de tipo de habito ya tengo las tablas con todo registrado mi problema es que quieren que de cada registro de cada niña al final sume cuantos puntos junto y luego restarselo a diez de cada categoría y luego sumar los dos resultados de cada alumna, ya logre hacer la consulta en la que por alumna me da que falta tuvo de cada categoría pero en la columna de puntos no se como hacer para que sume los que tiene esos registro de esa alumna, no se si se explico la idea es que por ejemplo
Juanita cívica por comer .05
juanita civica por talon .1
juanita civica por salir .05
Cada uno es un campo y yo necesito que al final de esta juanita me de el total de sus puntos algo así como
juanita total cívica 8 es decir a 10 le resto la suma de los puntos, se que existen las expresiones pero como son datos dentro de un mismo campo no se como hacerle habaer si me pueden ayudar, me urge un poco
gracias
1

1 respuesta

1
Respuesta de
Hola,
Si quieres hacerlo en una consulta mostrando en un solo registro el total cívica deberías hacer esto:
Bajas los campos por los cuales vas a agrupar, ej: el nombre
Y creas un campo con esta expresión:
TOTAL CIVICA: 10-DSuma("VALOR","TablaFaltas","NOMBRE LIKE'" & [NOMBRE] & "'")
Ahí te sacaría el total por cada alumna, un registro por cada una.
Asumí que querías mostrar esto en una consulta, porque en tu pregunta no especificas.
Saludos, Eymard.
Hola, muchas gracias por tu respuesta, si es una consulta lo que quiero hacer y con lo que me diste casi lo logramos pero no se porque no lo esta sumando bien, es decir, ya la aplique, si esta agrupado por niña y todas sus faltas pero al sumar los puntos no coincide con el resultado de la expresión por ejemplo,
juanita por comer .05
Por talón 1
por salir .25
¿Talones 1
y en el resultado total cívica en lugar de que saliera 7.25 dice 9 creo que solo esta contando algunos registros de esa niña pero no todos tendrías alguna idea de que esta pasando? Si necesitas que te aclare algo más dime y me exiplico mejor, gracias
Hola,
Primero, según tus datos el resultado total cívica no te va a salir nunca 7.25 te saldrá 7.7, ya que la suma da 2.3.
Segundo: Te copio el código sql para que lo pegues en la consulta desde su vista SQL
SELECT Tabla2.NOMBRE, 10-DSum("VALOR","TABLA2","NOMBRE LIKE'" & [NOMBRE] & "'") AS TOTAL
FROM Tabla2
GROUP BY Tabla2.NOMBRE;
Aquí reemplazas Tabla2 por el nombre de tu tabla, NOMBRE por el nombre del campo por el cual deseas agrupar y VALOR por el nombre del campo donde tienes los valores a sumar.
Esto debe funcionarte así, por ahora prueba mostrando solo eso dos campos en la consulta y verificas los resultados, si no te da el valor correcto, a lo mejor hay errores en la información, ejemplo: puedes tener juanita y juañita y por eso no agrupa bien.
En teoría debe funcionarte.
Me cuentas.
Eymard.
Hola, perdón por no haberte avisado antes que paso pero me fui de puente desde el jueves y hasta ahorita lo probé, y si funciona bueno eso creo porque lo hace bien la suma y todo sobre las dos categorías, lo que ahora necesitaría es que son dos consultas separadas por las categorías, es decir, una que calcule lo de hábitos y otra la de cívica con la misma fórmula pero separa porque después tengo que sacar el promedio de estos resultados.Ya trate de meterle en lavista de SQL (lo cual apenas supe donde estaba eso) el campo de categoría pero me dice que no esta incluida en el campo agregado que ahora entiendo que es l oque esta incluido en la fórmula por lo que no lo puedo hacer, si me pudieras ayudar con esto ultimo te lo agradecería mucho ya lo tengo que entregar el martes, para hacer las pruebas con la información de este periodo de calificiones.
Muchas gracias por tu ayuyda y tiempo
Hola, vamos a suponer que tus datos son estos 5 registros, todo en una tabla (TuTabla):
Nombre falta valor tipo
JUANITA COMER 0.5 Civica
JUANITA TALON 1 Hábitos
JUANITA SALIR 0.25 Civica
JUANITA TALONES 1 Hábitos
MARIA COMER 2 Civica
la consulta quedaría algo así:
SELECT TuTabla.NOMBRE, Nz(10-DSum("VALOR","TuTabla","Nombre LIKE '" & [Nombre] & "' AND tipo LIKE 'Civica'"),0) AS [TOTAL CIVICA], Nz(10-DSum("VALOR","TuTabla","Nombre LIKE '" & [Nombre] & "' AND tipo LIKE 'Hábitos'"),0) AS [TOTAL HABITOS], (Nz(10-DSum("VALOR","TuTabla","Nombre LIKE '" & [Nombre] & "' AND tipo LIKE 'Civica'"),0)+(Nz(10-DSum("VALOR","TuTabla","Nombre LIKE '" & [Nombre] & "' AND tipo LIKE 'Hábitos'"),0)))/2 AS PROMEDIO
FROM TuTabla
GROUP BY TuTabla.NOMBRE, Nz(10-DSum("VALOR","TuTabla","Nombre LIKE '" & [Nombre] & "' AND tipo LIKE 'Civica'"),0), Nz(10-DSum("VALOR","TuTabla","Nombre LIKE '" & [Nombre] & "' AND tipo LIKE 'Hábitos'"),0), (Nz(10-DSum("VALOR","TuTabla","Nombre LIKE '" & [Nombre] & "' AND tipo LIKE 'Civica'"),0)+(Nz(10-DSum("VALOR","TuTabla","Nombre LIKE '" & [Nombre] & "' AND tipo LIKE 'Hábitos'"),0)))/2;
Ojo: ¿Supuse qué existe un campo llamado? ¿Tipo? En el cual guardas Hábitos o Cívica según sea el caso.
Entonces:
Pega el código sql anterior en una consulta desde su vista sql
1. Reemplazas "TuTabla" por el nombre de tu tabla.
2. "NOMBRE" por el nombre del campo donde guardas el nombre de la alumna.
3. [TOTAL CIVICA] Y [TOTAL HABITOS] son los nombres de los campos nuevos en la consulta.
4. "PROMEDIO" Pues eso, donde se calculará el promedio de los dos totales.
Y listo debe funcionar (a mi me funcionó).
Si no te funciona, me escribes, me das tu correo y te envío el ejemplo.
Éxitos!
Eymard.
... A veces el sapo no es quien se queda con la Princesa
Hola, ya lo revisamos hoy en la mañana en el trabajo y ya casi esta como lo queremos pero me di cuenta que si hay alumnas que tienen puntos menos en cívica pero no en hábitos pues suma el 7.5 de cívica + 0 de hábitos entre dos pues me esta dando 3.2 de calificación, por lo que necesitamos agregar algo para que si no tiene calif no los divida o que verifique algo así como valor nulo, ¿o algo así como ves se podrá? Yo me imagino que para ti no ha de ser tan dificl pero como no le se a sql no se como moverle quede que si podía mañana les daba una respuesta así que si te es posible ayudarme hoy te lo agradeceré si no pues lo más pronto. Muchas gracias otra vez por tu ayuda
Hola Paola,
Pon esto en la vista Sql de tu consulta y resuelto el problema:
SELECT TuTabla.NOMBRE, 10-Nz(DSum("VALOR","TuTabla","Nombre LIKE '" & [Nombre] & "' AND tipo LIKE 'Civica'"),0) AS [TOTAL CIVICA], 10-Nz(DSum("VALOR","TuTabla","Nombre LIKE '" & [Nombre] & "' AND tipo LIKE 'Hábitos'"),0) AS [TOTAL HABITOS], (CDbl([TOTAL CIVICA])+CDbl([TOTAL HABITOS]))/2 AS PROMEDIO
FROM TuTabla
GROUP BY TuTabla.NOMBRE, 10-Nz(DSum("VALOR","TuTabla","Nombre LIKE '" & [Nombre] & "' AND tipo LIKE 'Civica'"),0), 10-Nz(DSum("VALOR","TuTabla","Nombre LIKE '" & [Nombre] & "' AND tipo LIKE 'Hábitos'"),0);
Recuerda cambiar los nombres de tabla y campos según los tengas y también valorar la respuesta si has quedado conforme.
Eymard.
... Una Princesa no se olvida así no más.
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema Microsoft Access o hacer tu propia pregunta: