Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-01-2012
juliannemiro juliannemiro is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 27
Poder: 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
  #2  
Antiguo 01-01-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
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.Text:= 'select * from Alumnos_Cursos where id_curso = 3 order by id_alumno ';     //''' + w_id_curso + ''' order by id_alumno ');
   Active:= True;
   if (ADOQueryAlumnos_Cursos.RecordCount > 0 ) then
   begin
   while not ADOQueryAlumnos_Cursos.Recordset.EOF do
   begin
   showmessage(ADOQueryAlumnos_Cursos.sql.text); //muestra el contenido en el ciclo
   showmessage(ADOQueryAlumnos_Cursos.Recordset.Fields['id_alumno'].value);
   w_id_alumno := intToStr(ADOQueryAlumnos_Cursos.Recordset.Fields['id_alumno'].value);
   showmessage('variable: '+ w_id_alumno );
   ADOQueryAlumnos_Cursos.next;
   end;
   end;
end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 01-01-2012
juliannemiro juliannemiro is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 27
Poder: 0
juliannemiro Va por buen camino
Gracias por contestar!
Probé tu código y en un principio tampoco anduvo, asique me puse a recorrer todo lo que había hecho y el problema finalmente era el adoquery.
Ya pude resolverlo.

Muchas gracias!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema recordset vacio en Procedimiento almacenado con ADO 2-D@monic SQL 5 09-07-2008 07:36:36
Uso de Recordset.Delete(arCurrent) saldanaluis Conexión con bases de datos 4 20-12-2007 00:54:25
RecordSet chona Tablas planas 2 20-11-2007 19:12:44
Recordset en VBScript bellota Varios 0 04-07-2007 20:32:24
Recordset o Cursor NMB Conexión con bases de datos 1 29-12-2006 16:54:26


La franja horaria es GMT +2. Ahora son las 21:03:08.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi