Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 06-08-2008
DANY DANY is offline
Miembro
 
Registrado: nov 2003
Posts: 145
Poder: 23
DANY Va por buen camino
Al final lo resolvi recorriendo la tabla e insertando registro por registro en el ClientDataSet, al principio dude del rendimiento, pero logre un metodo generico que las recorre y funciona rapido y bien.
Para entender el codigo deberia explicar una serie de cosas, como ser que tengo una clase por tabla y cada campo de la BD relacionado con un campo property de la clase asociada y que todas heredan de la clase en la que expongo el metodo. Pero cualquier cosa que necesiten , les respondere.
Expongo mi codigo:
Código Delphi [-]
procedure TClaseTablas.ExportarArchivoXML;
var ClientDataSet : TClientDataSet ;
  I, CantidadProp, Count : Integer;
  PropList: PPropList ;
  ValoresCampos:  array of variant ;
  Campos, Parametros: TStrings ;
  SQL: String ;
  q: TDataSet ;
begin
  try
    CantidadProp := GetPropList(Self, PropList);
    Count := 0;
    Campos := TStringList.Create ;
    Parametros := TStringList.Create ;

   //Genero los campos en el client data set.
    ClientDataSet := TClientDataSet.Create(nil);

    for I := 0 to CantidadProp  -1 do
    begin
      if (PropList[i].PropType^.Kind = tkClass) then
        Continue;

        if (PropList[i].Name='Estado') or (PropList[i].Name='NombreTabla') or
        (PropList[i].Name='NombreTabla') or (PropList[i].Name='NombreCampoClave')
        or (PropList[i].Name='ClavePrimaria') or (PropList[i].Name='Titulo')then
        Continue ; //AJJJJ Como distingo la clase base de la hija????
        //y titulo de donde sale?
        ClientDataSet.FieldDefs.Add(PropList[i].Name,ftString ,250,false);


    End;
    ClientDataSet.CreateDataSet ;
    q := fDatos.AbrirQuery('Select * From '+NombreTabla ,[]);

    while not q.Eof  do
    Begin
      ClientDataSet.Append ;

      for I := 0 to CantidadProp  -1 do
      begin
        if (PropList[i].PropType^.Kind = tkClass) then
          Continue;

        if (PropList[i].Name='Estado') or (PropList[i].Name='NombreTabla') or
        (PropList[i].Name='NombreTabla') or (PropList[i].Name='NombreCampoClave')
        or (PropList[i].Name='ClavePrimaria') or (PropList[i].Name='Titulo')then
        Continue ; //AJJJJ Como distingo la clase base de la hija????
        //y titulo de donde sale?
        ClientDataSet.FieldByName(PropList[i].Name).Value := q.FieldByName (PropList[i].Name).AsString ;

      End;
      q.Next ;
      ClientDataSet.Post ;
    End;

    ClientDataSet.SaveToFile('C:\Sistema\'+NombreTabla+'.xml',dfXML );

  Finally
    FreeAndNil ( ClientDataSet ) ;FreeAndNil ( Campos) ; FreeAndNil ( Parametros);

  End;

end;

muchas gracias al amigo poliburro quien se contacto personalmente por MSN y me ayudo a entender el asunto.
Perdon si el codigo esta confuso por que no se entiende el contexto y gracias por su tiempo.
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
Contar campos de una tabla por medio de un parametro!! Zakio14 Firebird e Interbase 9 22-02-2008 18:31:43
Una bacía medio vacía o medio llena. marcoszorrilla La Taberna 4 06-07-2007 17:57:21
Exportar una Tabla de SQL a un archivo TXT sanfer1ec SQL 5 11-04-2007 18:05:35
Exportar desde Tabla BDE a Excel tamara Conexión con bases de datos 1 03-10-2003 18:20:03
Exportar tabla a Excel jfloro API de Windows 1 08-09-2003 16:15:23


La franja horaria es GMT +2. Ahora son las 18:29:47.


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