Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-11-2014
MLROJO MLROJO is offline
Miembro
 
Registrado: jul 2004
Ubicación: Granada
Posts: 26
Poder: 0
MLROJO Va por buen camino
Importar/Exportar registros a XML

Hola,

Estoy creando de nuevo una aplicación, con las mismas funcionalidades que tenía en una aplicación antigua. Me encuentro la necesidad de desarrollar una funcionalidad que me permita en un principio varias cosas:

- Exportar registros de un tabla a XML.
- Importar registros del XML a la tabla.

Antes en la aplicación antigua, recorria los registros que queria exportar, los guardaba en un fichero (no XML) y con otro proceso leia estos ficheros y los importaba.

Ya que estoy intentando migrar y a la vez mejorar las funcionalidades de la aplicación antigua, he pensado en crear un fichero XML (me valdía cualquier otro formato similar, JSON por ejemplo), para ello y desde el desconocimiento, se me había ocurrido hacer lo siguiente:

Componentes para exportar/importar los registros a XML:

- Crear un TClientDataSet
- Crear un TDataSetProvider
- Crear un FDTable

Componentes para conectar a mi base de datos:

- FDConnection
- Varios FDTables...
- Creamos los diferentes DataSources, FDPhysqlitedriverlink, FDGuixWaitCursor... necesarios.

Lógica a relacionar:

- Al FDTable asignarle mi tabla que quiero importar/exportar.
- TDataSetProvider asignarle como DataSet FDTable.
- Al TClientDataSet asignarle el TDataSetProvider.

Llamar al método SaveToFile del TClientDataSet para generar el xml con los registros de la tabla. Posteriormente modifico los valores del XML y los cargo en el TClientDataSet mediante LoadFromFile, posteriormente usar el método ApplyUpdates de TClientDataSet para realizar los cambios en el FDTable (asociado al TDataSetProvider que a su vez está al TClientDataSet).

Con esta lógica me funciona en cierta medida.

Los problemas que me encuentro son:

- Despues de realizar el LoadFromFile (muestro el TClientDataSet en un grid), necesito modificar los valores de los registros para importarlos. Si no hago algún cambio en ese registro, el ApplyUpdate no interpreta el campo como modificado y no lo actualiza.
- El ApplyUpdate solo funciona para registros existentes en las dos tablas, es decir, en el TClientDataSet y en el FDQuery, si no existe no los crea.

Supongo que habrá opciones mucho más fáciles y que funcionan mejor, pero no se me ocurría otra forma y todo funcionaría relativamente si solventase los dos grandes problemas que comento arriba.

De esta forma, me gusta bastante, ya que puedo visualizar mis registros a importar/exportar en otro grid, cargar/modificar desde XML y con apenas unas líneas de código.

¿Como lo hacéis vosotros?¿se os ocurre como solucionar alguno de los 2 problemas que comento?

Espero haberme explicado medianamente bien.

Gracias,

Saludos
Responder Con Cita
Respuesta


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
Importar exportar datos luchifer Varios 1 12-05-2011 16:59:00
Exportar, importar datos bosterito SQL 1 02-07-2008 12:37:58
importar y exportar datos de .fdb a .fdb TrUnkS Firebird e Interbase 6 20-07-2007 10:00:33
Exportar e importar tablas Ariel03 Tablas planas 4 09-12-2006 15:48:49
exportar e importar datos alfil123 Conexión con bases de datos 2 20-11-2006 11:05:19


La franja horaria es GMT +2. Ahora son las 12:44:18.


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