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;
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 '); 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;
end;
end;