Problemas con ClientDataSet, ¿Puedes ayudarme?
Estoy realizando una aplicación que lee registros de un archivo XML para volcarlos en un DBGrid, para ello uso un XMLTransformProvider, un ClientDataSet, un DataSource y por supuesto un DBGrid. Hasta ahí todo perfecto. Salen los datos en el Grid sin problemas. El siguiente paso es introducir los datos en una tabla de Interbase 6, para ello uso un IBTable, IBDatabase y un IBTransaction (no se si es necesario, pero leí que lo necesitaría). Esta acción quiero que se realice al pulsar un botón, y el código del Click es:
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 erróneo en el código? ¿Sabrías cómo podría solucionar mi problema?
Muchas gracias por todo, espero tener suerte, ;). Chao.
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 erróneo en el código? ¿Sabrías cómo podría solucionar mi problema?
Muchas gracias por todo, espero tener suerte, ;). Chao.
1 Respuesta
Respuesta de markspiner
1