Ver Mensaje Individual
  #1  
Antiguo 05-07-2006
maravert maravert is offline
Miembro
 
Registrado: jul 2004
Ubicación: Xalapa, México
Posts: 158
Reputación: 20
maravert Va por buen camino
Que me falta. Ordenar informaciòn

Hola a todos, mi duda es la siguiente:


Tengo una tabla en Pardox 7 y delphi 7 que se llama datos.db, en ella tengo estos campos (docente : string; apoyo, puntualidad, trato ... : integer) donde los aluknos califican al maestro.

Lo que deseo hacer es obtener la calificaciòn promedio de cada uno de los maestros, en promedio cada maestro tendrá 400 registros, lo que deseo es sumar todas las calificaciones por cada maestro en puntualidad, apoyo, trato, etc, y obtener la calificaciòn promedio general. Luego presentar esta informaciòn en un reporte de mayor a menor.

Pero al procesar los registros mediante una consulta el proceso se queda en un bucle y al parecer no encuentra el fin de registros (EOF)




Estoy ordenando una tabla (datos.db) por docente mediante una consulta y paso los resultados a otra tabla (pordocente.db), me pasa los resultados correctamente pero no sale del ciclo al llegar a EOF.

la tabla la ordeno de la siguiente manera


Código SQL [-]
query1.Close;
Query1.SQL.Text:= 'SELECT * FROM datos order by docente';
 query1.Open;
query1.First;




Cuando quiero procesar la tabla no se sale del segundo while, es decir no llega a esta instrucciòn


Código Delphi [-]
showmessage ('leei todos los archivos');




El codigo es el siguiente:


Código Delphi [-]
procedure TForm2.Grficas1Click(Sender: TObject);
var
anterior : string;
reg, Tdomi, Thabi, Tform, Tpunt, Tpres, TApoy, Ttrat, prom : real;
aperiodo, adocente, aasignatura, asemestre, agrupo: string;
afecha : Tdatetime;
registros, totales, a : integer;
begin
table2.Open;
while not table2.Eof do
   begin
   table2.Delete;
   end;
totales := 0;
a := 1;
query1.Close;
Query1.SQL.Text:= 'SELECT * FROM datos order by docente';
  //   Se guardan los campos a variables
query1.Open;
query1.First;
registros := query1.RecNo;
reg := 0;
totales := 0;
while not query1.Eof do
    begin
      anterior := query1.fieldbyname ('docente').AsString;
      aperiodo    := query1.fieldbyname ('periodo').AsString;
      aasignatura := query1.fieldbyname ('asignatura').AsString;
      asemestre   := query1.fieldbyname ('semestre').AsString;
      agrupo      := query1.fieldbyname ('grupo').AsString;
      afecha      := query1.fieldbyname ('fecha').AsDateTime;
      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;
    Showmessage ('?sali del while');
    table2.Append;
    table2.FieldByName('periodo').Asstring := aperiodo;
    table2.FieldByName('docente').Asstring := anterior;
    table2.FieldByName('asignatura').Asstring := aasignatura;
    table2.FieldByName('semestre').Asstring := asemestre;
    table2.FieldByName('grupo').Asstring := agrupo;
    table2.FieldByName('fecha').AsDateTime := afecha;
    table2.FieldByName('dominio').AsFloat := Tdomi / reg;
    table2.FieldByName('habilidad').AsFloat := Thabi / reg;
    table2.FieldByName('evaluar').AsFloat := Tform / reg;
    table2.FieldByName('puntualidad').AsFloat := Tpunt / reg;
    table2.FieldByName('presentacion').AsFloat := Tpres / reg;
    table2.FieldByName('apoyo').AsFloat := Tapoy / reg;
    table2.FieldByName('trato').AsFloat := Ttrat / reg;
    prom :=  (  ( Tdomi / reg) +  (Thabi / reg) + (Tform / reg) + (Tpunt / reg) + (Tpres / reg) +  (Tapoy / reg)+ (Ttrat / reg)) / 7;
    table2.FieldByName('promedio').AsFloat := prom;
    table2.Post;
    reg := 0;
    Tdomi := 0; Thabi := 0; Tform := 0; Tpunt := 0; Tpres := 0; Tapoy := 0; Ttrat := 0;
end;
 showmessage ('leei todos los archivos');
 
close;
end;


Podrìa alguin decirme que estoy haciendo mal.

Gracias a todos

Última edición por marcoszorrilla fecha: 05-07-2006 a las 20:03:09.
Responder Con Cita