Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 10-02-2009
Bauhaus1975 Bauhaus1975 is offline
Miembro
 
Registrado: may 2005
Ubicación: Málaga
Posts: 135
Poder: 22
Bauhaus1975 Va por buen camino
Hola y gracias de nuevo Al González por tus 'nutridas' respuestas.
Tendré en cuenta la librería que propones, pero seguí probando con la función y se me ocurrió que si ejecuto la query y luego copio los FieldDefs, mantedría la estructura de campos. Así con este enfoque me ha funcionado perfectamente, sólo había un error: La sentencia tabla.Append tuve que cambiarla por tabla.Insert para que añadiera cada nuevo registro.

En cuanto al cierre del DataSet. Si cierro el data set ¡no se pierden los registros! lo he vuelto a abrir y ahí, estan los puedo recorrer y verificar uno a no. Por tanto esto esto funciona según he probado:

Código Delphi [-]
// Suponemos QueryX como el TIBQuery con el SQL listo para ejecutar
lista:= cloneQuery(QueryX); // Realizamos query y copia del data set según nuestra función.
while not (lista.EOF) do
begin
       showmessage('ID del registro'+lista.FieldByName('ID'));
       lista.Next;
end;
lista.Close;
lista.Open;
lista.First;
while not (lista.EOF) do
begin
        showmessage('ID del registro'+lista.FieldByName('ID'));
        lista.Next;
end;

Y aquí va como ha quedado la ULTIMA versión de la función que hemos estado trabajando:

Código Delphi [-]
function TEquipoCompTemp.cloneQuery(ibQuery:TIBQuery):TClientDataSet;
var
    Campo :string;
    i :integer;
    tabla : TClientDataSet;
begin
    tabla := TClientDataSet.Create(nil);
    tabla.ProviderName := '';
    tabla.PacketRecords := -1;
    tabla.StoreDefs := true;
    // Realizamos la query
    ibQuery.Open();
    // Copiamos estructura de campos
    tabla.FieldDefs := ibQuery.FieldDefs;
    // Abrimos DataSet
    tabla.CreateDataSet;
    with ibQuery do
        begin
        while not EOF do
          begin
          tabla.Insert; // Hemos cambiado Append por Insert
          for i := 0 to FieldCount-1 do
            begin
            Campo := Fields[i].FieldName;
            tabla[Campo] := ibQuery[Campo];
          end;
          tabla.Post;
          Next;
        end;
        Close;
    end;
    result := tabla;
end;

Un saludo.
Responder Con Cita
 



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
Problemas copiando y pegando documentos mixtos sue23cr Varios 1 13-07-2007 10:32:21
Problemas al actualizar un TClientDataset y ADO PEDRO_PASAMAR Conexión con bases de datos 1 30-11-2004 10:52:46
Problemas con TClientDataSet dmasson Conexión con bases de datos 5 30-05-2004 21:17:28
Problemas con In en TIBQuery Rabata Conexión con bases de datos 1 15-10-2003 13:56:59
Problemas con In en TIBQuery Rabata SQL 1 15-10-2003 13:56:59


La franja horaria es GMT +2. Ahora son las 00:52:28.


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