Ver Mensaje Individual
  #1  
Antiguo 01-01-2012
juliannemiro juliannemiro is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 27
Reputación: 0
juliannemiro Va por buen camino
Problema con el RecordSet

Hola a Todos.
Antes que nada 2 cosas. Primero, muy feliz 2012 y segundo gracias por entrar a leer mi problema.

Les cuento que tengo un problema con el recordset.
Estoy haciendo algo tan simple como recorrer una tabla filtrando informacion con un where. Pero tengo un problema con los resultados, evidentemente algo estoy haciendo mal.
Ejecuto el programa mostrando -mientras no sea EOF- un showmessage con el resultado que va obteniendo. El problema es que en vez de mostrarme los 7 registros que debería, me muestra el primero, y luego 6 veces el último registro.
No se si me explico. En vez de mostrarme por ejemplo 1,2,3,4,5,6,7 me muestra 1,7,7,7,7,7,7

El objetivo de lo que deseo hacer es recorrer una tabla y mientras el id_curso = 3, me traiga todos los alumnos para yo después poder asignarles una fecha y la asistencia dando de alta un nuevo registro. (esto lo hago en un segundo paso, que esta comentado y todavía no fue probado.)

-Trabajo con Delphi 7 y SQL Server 2000
-Tengo el adoable, adoquery y datasource de la tabla con la que tengo este problema (Alumnos_Cursos)
-La tabla alumnos_cursos tiene solamente los campos id_alumno e id_curso.

Les dejo el código que estoy utilizando.

Saludos y gracias por llegar leyendo hasta esta altura del post!

Código Delphi [-]
procedure TFormAsistencia.BitBtn2Click(Sender: TObject);
var
w_id_curso, w_id_alumno: string;
// w_id_alumno : integer;
begin
  w_id_curso:= EditCursoId.text;

  with ADOQueryAlumnos_Cursos do
  begin
    Close;
    SQL.Clear;
    SQL.add('select * from Alumnos_Cursos where id_curso = 3 order by id_alumno ');     //''' + w_id_curso + ''' order by id_alumno ');
    showmessage(ADOQueryAlumnos_Cursos.sql.text);
    Open;
    Active;
      if (ADOQueryAlumnos_Cursos.RecordCount > 0 ) then
      begin
        while not ADOQueryAlumnos_Cursos.Recordset.EOF do
        begin
          showmessage(ADOQueryAlumnos_Cursos.Recordset.Fields['id_alumno'].value);
          w_id_alumno :=intToStr(ADOQueryAlumnos_Cursos.Recordset.Fields['id_alumno'].value);
          showmessage('variable: '+ w_id_alumno );
          next;
        {
          self.ADOTableAsistencias.Open;
          self.ADOTableAsistencias.Insert;
          self.ADOTableAsistencias.FieldByName('id_alumno').AsInteger:=StrToInt(w_id_alumno);
          self.ADOTableAsistencias.FieldByName('fecha').AsDateTime:=DateTimePicker1.datetime;
          self.ADOTableAsistencias.FieldByName('n_anioLectivo').AsInteger:= StrToInt(EditCursoAnioLect.text);
          self.ADOTableAsistencias.FieldByName('id_asistencias_tipo').AsInteger:= 1;
          self.ADOTableAsistencias.FieldByName('b_justificado').AsString:= 'S' ;
          self.ADOTableAsistencias.FieldByName('b_computa').AsString:= 'S';
          self.ADOTableAsistencias.Post;
          self.ADOTableAsistencias.Close;
          }
          //next;
          end;
      end;
Responder Con Cita