Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-12-2008
sur-se sur-se is offline
Miembro
 
Registrado: may 2003
Posts: 212
Poder: 21
sur-se Va por buen camino
Campos creados dinámicamente clientdataset

Hola. Utilizo Delphi 5.
Necesito poder crear dinámicamente campos en un clientdataset. Al arrancar la aplicación este dispone de 2 campos, que en función de la operatoria del cliente requiere añadir nuevos. El clientdataset lo utilizo como tabla temporal en memoria no conectada a ningún provider, y lo relleno con insert/post etc.
El problema es que al añadir dinámicamente campos me da un error de "missing provider. ..." que no sé como solucionar. Os dejo aquí el código que utilzo:

Código:
...
private
   col: integer ;   // contador de columnas añadidas
....
// Al crear el form, hacemos el clientdataset.createdataset;
...
// botón para añadir columnas
procedure TForm1.Button2Click(Sender: TObject);
VAR nombrecampo:string;
begin
     button2.Enabled:=false;
     col:=col+1;
     nombrecampo:='C'+formatfloat('00',col);

     ClientDataSet1.close; // sin esto también da error pero se pierden los datos
     with ClientDataSet1.FieldDefs do
     begin
               with AddFieldDef do
                    begin
                         Name := nombrecampo;

                         DataType := ftString;
                         Size := 10;
                         CreateField(ClientDataSet1,nil,nombrecampo);
                    end;
     end;

     cliendataset1.open;  // Aquí salta la exception
end;

// botón para borrar columnas (siempre la última que se añadió)
procedure TForm1.Button3Click(Sender: TObject);
begin
     if col>0 then
     begin
         col:=col-1; 
         ClientDataSet1.close;
       ClientDataSet1.Fields.Remove(ClientDataSet1.Fields[ClientDataSet1.Fields.count-1]);
     end;
end;
Al borrar una columna también pasa una cosa extraña y es que si después se trata de añadir de nuevo dice que ya existe una columna con el nombre Cxx (donde xx es el col por el que se va).
Llevo mucho tiempo usando el clientdataset sin problemas pero nunca se me había planteado crear/destruir columnas dinámicamente mientras se mantienen los datos que estuviesen registrados, y necesito que esos datos se mantengan a pesar de los cambios en la estructura. No sé si esto será posible de hacer.
Gracias.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Campos creados con Fields editor de Delphi brakaman Conexión con bases de datos 3 26-10-2007 16:46:03
Cerrar dos formularios creados dinamicamente (al mismo tiempo) ctronx Varios 7 02-09-2004 00:19:04
cerrar formularios creados dinamicamente ctronx Varios 5 17-06-2004 18:25:17
Campos creados dinámicamente vs creados estáticamente Jose_Pérez Conexión con bases de datos 2 14-04-2004 11:34:03
Asignar evento on exit y otros a varios labeledit creados dinamicamente cotoprix OOP 2 08-01-2004 23:05:53


La franja horaria es GMT +2. Ahora son las 14:15:03.


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