FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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; 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. |
#2
|
||||
|
||||
Necesitas llamar al Método CreateDataset antes de hacer open (puesto que no estás usando providers)
__________________
self.free; |
#3
|
|||
|
|||
Hola. Gracias por la respuesta, pero precisamente ahí está la cuestión. Lo que quiero saber es si hay forma de alterar la estructura del clientdataset sin perder los datos que contiene. Si hago el createdataset, pierdo los datos.
Un saludo. |
#5
|
|||
|
|||
Hola. Gracias por la respuesta. No conocía ese método del clonecursor. Me ha venido estupendamente. Clono el clientdataset, modifico la estructura del original y luego restauro los datos. Ya me funciona bien.
Gracias por la ayuda. |
#6
|
||||
|
||||
hola
no se si aun existe alguno de estos usuarios, pero de ser asi, podrias indicarme como hiciste para borrar una columna? tengo los mismos problemas...
gracias |
#7
|
|||
|
|||
Hola. Pues no encontré la solución, por lo que utilizé el método sugerido de clonar el dataset. Como habitualmente en la tabla tengo como máximo 30 o 40 registros, pues es muy rápido y me fue suficiente con ese sistema. Lo siento, pero no seguí investigando el asunto.
Un saludo. |
|
|
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 |
|