Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Trabajando con ClientDataSet (https://www.clubdelphi.com/foros/showthread.php?t=48114)

gsilvei 15-09-2007 21:10:33

Trabajando con ClientDataSet
 
Hola a todos,

Estoy creando una tabla temporaria, utilizando ClientDataSet.

Una vez que cierro mi form, crea un .xml e una vez que creo otro registro, lee el .xml.

Mi pregunta es la siguiente:

1) Es posible crear un .xml para cada registro nuevo.

2) como identifico el mismo cuando veo todos los datos.



Código Delphi [-]

procedure TFormCprograma.AntesdeSalvar;
begin
   Cds.SaveToFile('Cds_Temp.xml');
end;



procedure TFormCprograma.AntesdeIncluir;
begin
  Cds.LoadFromFile('Cds_Temp.xml');
end;



Cita:


xml:

<?xml version="1.0" standalone="yes" ?>
- <DATAPACKET Version="2.0">
- <METADATA>
- <FIELDS>
<FIELD attrname="id" fieldtype="string" WIDTH="4" />
<FIELD attrname="cod" fieldtype="i4" />
<FIELD attrname="exercicio" fieldtype="string" WIDTH="60" />
<FIELD attrname="tiempo" fieldtype="i4" />
</FIELDS>
<PARAMS CHANGE_LOG="1 0 4" />
</METADATA>
- <ROWDATA>
<ROW RowState="4" id="0001" cod="0001" exercicio="Teste" tempo="10" />
</ROWDATA>
</DATAPACKET>
Agradesco por la ajuda,
Saludos,
Guillermo

b3nshi 16-09-2007 03:24:00

Bueno... si es posible? si... es posible, y dependiendo de como lo guardes vas a leerlo y reconocerlo despues... no se si entendi bien... pero a la tabla la estas guardando como un XML, no?

Y lo q tu quieres hacer es guardar cada registro como un XML?

Bueno... una solucion q te puedo dar, es hacer uso, de... por ejemplo, el componente Txmldocument... y vas leyendo registro a registro de la tabla y guardandolo en un archivo xml diferente...

En realidad no entiendo con q fin hacerlo... pero si buscas por los foros encontraras mucha informacion... Tanto de como leer y como escribir un XML, yo mismo puse el codigo fuente de la parte de un programa q escribi para hacer eso. Es cuestion de buscar no mas ;)

Y bueno...si entendi mal la idea no tienes q hacer mas q corregirme y explicarte un poco mejor para ajudarte :D

{Saludos}

gsilvei 20-09-2007 13:47:42

Hola,mi idea es crear un xml para cada registro que hago nuevo.
Ejemplo:

Tabla Alumno
Cod
Nombre

Tabla Programa
id
Cod_alumno
Nombre
Exercicio
Fecha

Registro un programa para un alumno,
cada alumno puede tener n cantidad de programas,
es ahi que necesito crear un xml para cada programa.
Intente utilizar el codigo de b3nshi que encontre, y da algunos errores, creo pq falta declarar, algunas lineas que no se a que se refieren

Código Delphi [-]
 
var
i: integer;
ndia, nage, nhor, nact: IXMLNode;
begin
{Guardo la actividad}
  xml1.filename := ''; //porq uso el mismo componente para abrir, se puede crear en tiempo de ejecucion y este problema no apareceria
 xml1.Active := True;
  //Ahora si creo el xml
  xml1.Version := '1.0';
 nage := Xml1.AddChild('Agenda');
 for i := 0 to agenda.Items.Count - 1 do
   begin
       case plan.Items[i].Level of
         0:begin ndia := nage.AddChild('Dia'); ndia.Attributes['Text']:= agenda.Items[i].Text; end;
         1:begin nhor := ndia.AddChild('Horario'); nhor.Attributes['Text'] := agenda.Items[i].Text;end;
         2:begin nact := nhor.AddChild('Actividad'); nact.Attributes['Text'] := agenda.items[i].Text; end;
        end;
   end; //Fin del for
  //ahora si guardo el archivo xml
  xml1.SaveToFile('agenda\' + trim(enom.text) + '.ext');
  xml1.active:= false;
end; //Fin del procedimiento q crea el fichero

marque en color rojo lo que no esta declarado,
gracias por la ayuda,
Saludos
Guillermo

b3nshi 20-09-2007 20:35:39

Si no me equivoco ese es un codigo mio no?

Bueno... te cuento q ese plan, es un treeview, en donde yo tenia los datos q queria guardar... vos tendrias q reemplazar por la info de la tabla. Es mas... viste q despues hace mension a un componente agenda? Bueno... plan es agenda... o sea... me olvide de cambiarlo...

Y el enom.text era un Tedit en donde ponia el nombre del archivo en el q se tenia q guardar el xml. Es decir eso lo podes reemplazar por cualquier nombre.

{Saludos}


La franja horaria es GMT +2. Ahora son las 11:14:54.

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