Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-08-2004
RobertoAmores RobertoAmores is offline
Miembro
 
Registrado: jul 2004
Posts: 10
Poder: 0
RobertoAmores Va por buen camino
Alguien puede explicarme como funciona realmente un DataSet?

Necesito capturar una serie de registros de un ClientDataSet, pero no entiendo bien como funciona internamente. Tengo este codigo:

Código:
procedure TForm1.Button1Click(Sender: TObject);
begin
  IBTable1.Active:=True;
  While not ClientDataSet1.Eof do
  begin
	IBTable1.Insert;
	IBTable1.Fields[0].Value := ClientDataSet1.Fields[0].Value;
	IBTable1.Fields[1].Value := ClientDataSet1.Fields[1].Value;
	IBTable1.Fields[2].Value := ClientDataSet1.Fields[2].Value;
	IBTable1.Fields[3].Value := ClientDataSet1.Fields[3].Value;
	IBTable1.Fields[4].Value := ClientDataSet1.Fields[4].Value;
	IBTable1.Fields[5].Value := ClientDataSet1.Fields[5].Value;
	IBTable1.Fields[6].Value := ClientDataSet1.Fields[6].Value;
	IBTable1.Fields[7].Value := ClientDataSet1.Fields[7].Value;
	IBTable1.Fields[8].Value := ClientDataSet1.Fields[8].Value;
	ClientDataSet1.Next;
  end;
  IBTable1.Post;
  IBTable1.Active:=False;
end;
Pero sólo me inserta el primer registro. ¿Ves algo erroneo en el codigo? ¿Sabrias como podria solucionar mi problema?
Muchas gracias por todo, espero tener suerte, . Chao.
Responder Con Cita
  #2  
Antiguo 25-08-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 21
marto Va por buen camino
Wop!

¿Por que no pones el Post dentro del bucle?
__________________
E pur si muove
Responder Con Cita
  #3  
Antiguo 25-08-2004
Sirkius Sirkius is offline
Miembro
 
Registrado: jun 2004
Posts: 83
Poder: 20
Sirkius Va por buen camino
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var i: Integer;
begin
   IBTable1.Active:=True;
   While not ClientDataSet1.Eof do
   begin
      IBTable1.Insert;
      For i := 0 to 8 do
         IBTable1.Fields[i].Value := ClientDataSet1.Fields[i].Value;
      ClientDataSet1.Next;
      IBTable1.Post;
   end;
   IBTable1.Active:=False;
end;


Así mejor
Responder Con Cita
  #4  
Antiguo 25-08-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
marto y Sirkius:

¿Están seguros de que es necesario?

La ayuda de Delphi dice:

Cita:
Empezado por ayuda de delphi
Dataset methods that change the dataset state, such as Edit, Insert, or Append, or that move from one record to another, such as First, Last, Next, and Prior automatically call Post.
Entonces, según esto, cada vez que entra al bucle, la instrucción IBTable1.Insert automáticamente hará el Post de la última inserción. La única inserción que faltaría sería la última y el POst fuera del bucle se encargaría de ello.

// Saludos
Responder Con Cita
  #5  
Antiguo 26-08-2004
aig aig is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 56
Poder: 21
aig Va por buen camino
Cool ¿Donde está ClientDataSet1?

El único problema que puede haber puede ser el registro activo de ClientDataSet1, si es el último lógicamente solo pasará un registro.

Prueba a poner ClientDataSet1.First antes del bucle y por si... asegurate que la tabla tiene más de 1 registro o que no está activo ningún filtro o rango.
Responder Con Cita
  #6  
Antiguo 26-08-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 21
marto Va por buen camino
Cita:
Empezado por roman
¿Están seguros de que es necesario?
Ya lo pensé roman, pero como nunca he trabajado con los objetos IB... era lo único raro que veía.

Cita:
Empezado por aig
El único problema que puede haber puede ser el registro activo de ClientDataSet1..
Amigo aig, a veces lo más evidente se nos escapa a mi tambien me parece que puede ser eso
__________________
E pur si muove
Responder Con Cita
  #7  
Antiguo 26-08-2004
Sirkius Sirkius is offline
Miembro
 
Registrado: jun 2004
Posts: 83
Poder: 20
Sirkius Va por buen camino
De todas formas, nada más sencillo que ir con el debugger paso a paso para ver cuantas vueltas da o si pasa algo raro... A mi siempre me resuelve todo el paso a paso :P
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


La franja horaria es GMT +2. Ahora son las 10:45:58.


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