¿Cómo usar el calculate?

Buenas
Lo que quiero realizar es un % de inaistencia de un alumno dado
t explico desde el comienzo, tengo un form con una grilla de los alumnos(solo dni y nombre)
También hay dos textbox uno en donde ingreso la cant de clase de una materia dada
y el otro me muestra el % total del alumno
en el entorno tengo las tablas alumno y inasistencia relacionado por DNI
cuando selecciono un alumno de la grilla quiero que me calcule el % de inasistencia
en la tabla inaistncia esta el campo estado cuyo valor puede ser AUSENTE O PRESENTE
quiero que el calculate cuente las veces que c repite el AUSENTE Y pasarlo a una variable para al fin sacar el %
Espero tu rpta y hago cualquier aclaración si es necesario
chau y hasta pronto

1 respuesta

Respuesta
1
Intenta:
Count For estado = "AUSENTE" To m.nFalta
Hola víctor
Me puedes ayudar con este código, el contador de "AUSENTE" funcionaba bien, pero cuando agregue + código no hace nada
quiero que cuente todas las faltas dl alumno que selecciono de la grilla y la materia en que falto
ESTE CÓDIGO ESTA EN EL BOTÓN CALCULAR PARA SACAR EL % DE ASISTENCIA y como vras tengo 3 textbox y un combo de materias y 3 tablas ALUMNOS, INASISTNCIA Y MATERIAS
en el 1º text coloco las clase totales en el 2º text de faltas toma la cuenta del COUNT=AUSENTE y el ultimo text me muestra %
LOCAL m.nFalta, CLASES, TOTALF, CLASESA, CLASEST
SELECT INASISTENCIA
GO TOP
LOCATE FOR id_dnialum==THISFORM.Grid1.Column1.Text1.Value
IF FOUND()
        Count For estado = "AUSENTE" To m.nFalta
        SELECT materias
            if descrip==thisform.comboMateria.Value
                IF inasistencia.id_mat==materias.id_materia
                    CLASEST=THISFORM.TXtclases.Value
                    THISFORM.TXtfaltas.Value=m.nFalta
                    CLASESA=CLASEST-m.nFalta
                    TOTALF=INT((CLASESA*100)/CLASEST)
                    THISFORM.TXttotal.Value=TOTALF
                    THISFORM.Grid1.Refresh
                Endif
        Endif
Endif
Gracias por todo y espero tu rpta.
No vamos.
¿No está realizando la suma?
Hola
Todo ese código no hace nada
Quiero que seleccione un alumno de la grilla y cuent la cantidad de "AUSENTE" PERO NO HACE NADA. El código + abajo si funciona pero cuenta todo "AUSENTE" QUE encuentra o sea que no lo hace por un alumno dado, creo que el locate esta mal.
*****
THISFORM.Grid1.Column1.Text1.Value (en la grilla es el nº dni dl alumno)
*****
LOCATE FOR id_dnialum==THISFORM.Grid1.Column1.Text1.Value
    IF FOUND()
        Count For estado = "AUSENTE" To m.nFalta
                CLASEST=THISFORM.TXtclases.Value
                THISFORM.TXtfaltas.Value=m.nFalta
                CLASESA=CLASEST-m.nFalta
                TOTALF=INT((CLASESA*100)/CLASEST)
                THISFORM.TXttotal.Value=TOTALF
                THISFORM.Grid1.Refresh
Endif
Espero aclarart
chau y hasta pronto
Intenta:
Count For estado = "AUSENTE" And id_dnialum == ThisForm.Grid1.Column1.Text1.Value To m.nFalta
ClasesT = ThisForm.TXtclases.Value
ThisForm.TXtfaltas.Value = m.nFalta
ClasesA = ClasesT - m.nFalta
TotalF = Int( (ClasesA * 100 ) / ClasesT )
ThisForm.TXttotal.Value = TotalF
ThisForm. Grid1. Refresh
Hola víctor
el codigo q m pasast no funciona correctamente
solo cuenta los "AUSENTES"  del primer alumno q aparece en la grilla 
parece q no hace la comparacion de DNI
pregunta:como se hace para comparar un campo de una grilla con uno de la tabla?
El objeto Grid tiene como origen una tabla, entonces lo único que debes hacer es comparar los datos de ambas tablas.
Y si, el código solo es para que cuente los datos del registro actualmente seleccionado ¿No era lo que deseabas?, porque el código que proporcionaste es exactamente eso lo que hace.
Buenas
el codigo q t proporcione lo hice yo pero con muchas dudas porq soy un principiant en visual fox
vamos a ver tengo cargado algunos en la tabla de inasistncia cuando selecciono un alumno de la grilla q pued ser el cuarto registro no realiza el calculo de inasistncia de ese alumno sino q siempre realiza el conteo para el primer registro tnga 2 o mas alumnos cargados
noce si me expliq bien cualquir duda vuelvo a aclarat
nos vmos
¿Por qué no en lugar de hacer la búsqueda por la información en el Grid no lo haces por el valor de la tabla?
Hola
¿Bueno lo pruebo en casa y t aviso px aohra tno que irme
una duda como se que va a calcular el alumno que selecciono de la grilla?
Nos vamos
Porque es el alumno seleccionado y por lo tanto debe ser el mismo que se encuentra en la tabla.
Hola
solucine el tema d la grilla, lo q hice fue colocar un textbox dni en el form y en el evento click d la grilla coloq
select inasistncia
thisform.txtdni.value=inasistencia.id_dnialum
asi el textbox toma el dni d la grilla y luego hago la comparacion textbox con la tabla
de esta forma si m cuenta los AUSENTES de cada alumno el unico problema q tngo ahora es con el combomateria
asi qdo el codigo
*******************
Count For estado = "AUSENTE" And id_dnialum == ThisForm.txtdni.value To m.nFalta
ClasesT = ThisForm.TXtclases.Value
ThisForm.TXtfaltas.Value = m.nFalta
ClasesA = ClasesT - m.nFalta
TotalF = Int( (ClasesA * 100 ) / ClasesT )
ThisForm.TXttotal.Value = TotalF
ThisForm.Grid1.Refresh
*******************
Ahora quiero que cuente los AUSENTES según la materia que selecciono en el combo
podrías ayudarme en esta part
la tabla matrias se relaciona con id_materia-inasistencia.id_mat
espero que pueda ayudarte mi explicación
chau y hasta pronto
Count For estado == "AUSENTE" And id_dnialum == ThisForm.txtdni.Value And materia == ThisForm.Combo1.Value

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas