El problema está aqui
Código Delphi
[-]
while anterior = query1.fieldbyname ('docente').AsString do
begin
reg := reg + 1;
totales := totales + 1;
Tdomi := Tdomi + query1.fieldbyname ('dominio').Asinteger;
Thabi := Thabi + query1.fieldbyname ('habilidad').Asinteger;
Tform := Tform + query1.fieldbyname ('evaluar').Asinteger;
Tpunt := Tpunt + query1.fieldbyname ('puntualidad').Asinteger;
Tpres := Tpres + query1.fieldbyname ('presentacion').Asinteger;
Tapoy := Tapoy + query1.fieldbyname ('apoyo').Asinteger;
Ttrat := Ttrat + query1.fieldbyname ('trato').Asinteger;
query1.Next;
end;
Este bucle nunca se sale, porque aunque tienes puesto el query1.Next, la condición para el último registro puede hacer que se quede embuclado. Es decir, para el último registro, el next dara EOF pero no se sale del bucle, y en ese caso siempre es anterior = query1.fieldbyname ('docente').AsString
Te valdría con cambiar el while a algo asi
WHILE (anterior = query1.fieldbyname ('docente').AsString) OR (NOT query1.EOF) do
...
Asi se sale del bucle cuando llegue al final de la tabla
Espero haberte ayudado
Saludos