Hola de nuevo,
Estoy tratando de crear una función para copiar el contenido de un TIBQuery a un TClientDataSet, donde tengo unos problemillas:
La primera cuestión es el error que obtengo al tratar de trabajar con el TClientDataSet en tiempo de ejecución. Creo el objeto, pero al tratar de hacer un open para insertar un registro obtengo el error 'Missing data provider or data packet'. Y sabemos que trabajando en diseño no hay problemas, además lo he podido comprobar
-con este ejemplo aquí publicado-
La segunda cuestión, es que funcione la función que adjunto, pues me he basado en una que rodaba por el foro, pero usando TDataSet, el cual que yo sepa no me sirve pues hay que usar una clase hija de TDataSet.
Esta función me es necesaria para tener un paquete de datos disponible tras realizar la query (previamente, y solo una vez) puesto que a veces necesito alimentar varios objetos con el resultado, o tener los datos disponibles sin molestar a la BBDD una y otra vez. Seguramente ya os habréis encontrado alguno con este tema antes.
Aquí va la función que estoy tratando de hacer:
Código Delphi
[-]
function cloneQuery(ibQuery:TIBQuery):TClientDataSet;
var
Campo :string;
i :integer;
tabla : TClientDataSet;
begin
tabla:= TClientDataSet.Create(nil); tabla.ProviderName := '';
tabla.PacketRecords := -1;
tabla.StoreDefs := true;
tabla.Open; with ibQuery do
begin
Open;
while not EOF do begin
tabla.Append;
for i := 0 to FieldCount-1 do
begin
Campo := Fields[i].FieldName;
tabla[Campo] := ibQuery[Campo];
end;
tabla.Post;
Next;
end;
Close;
end;
tabla.Close;
result := tabla;
end;
Muchas gracias y un saludo.