Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-12-2005
Iceman Iceman is offline
Miembro
 
Registrado: ago 2003
Ubicación: Tierra del Fuego
Posts: 25
Poder: 0
Iceman Va por buen camino
Exportar de Tabla a TXT con longitud fija

Hola Foro:
como puedo hacer para pasar los datos de una tabla Paradox o DBF a un archivo TXT. He visto los mensajes del foro, pero todos los ejemplos lo pasan sin respetar el ancho de los campos de la tabla. Lo que necesito es que si el campo tiene una cierta longitud (ya sea numerico o alfanumerico), se respete al pasar al TXT.

Desde ya muchas gracias
__________________
Desde el fin del mundo....
Responder Con Cita
  #2  
Antiguo 07-12-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Basado en: http://www.clubdelphi.com/foros/showthread.php?t=27767
Y utilizando: http://www.clubdelphi.com/foros/show...60&postcount=2
Te escribí:
Código Delphi [-]
procedure DataSetToStream(ADataSet: TDataSet; AStream: TStream; ASeparator: string; AFixedSize: Boolean);
var
  i: Integer;
  S: string;
begin
  if not ADataSet.IsEmpty then
  begin
    ADataSet.EnableControls;
    try
      ADataSet.First;
      repeat
        S := '';
        for i := 0 to ADataSet.Fields.Count -1 do
          if ADataSet.Fields[i].Visible then
          begin
            if i > 0 then S := S + ASeparator;
            if AFixedSize then
              S := S + RPad(ADataSet.Fields[i].DisplayText, ' ', ADataSet.Fields[i].DisplayWidth)
            else
              S := S + ADataSet.Fields[i].DisplayText;
          end;
        S := S + #13#10;
        AStream.Write(S[1], Length(S));
        ADataSet.Next;
      until ADataSet.Eof;
    finally
      ADataSet.DisableControls;

    end;
  end;
end;

procedure DataSetToFile(ADataSet: TDataSet; AFileName: TFileName; ASeparator: Char; AFixedSize: Boolean);
var
  Stream: TStream;
begin
  Stream := TFileStream.Create(AFileName, fmCreate);
  try
    DataSetToStream(ADataSet, Stream, ASeparator, AFixedSize);
  finally
    Stream.Free;
  end;
end;
PROBALO!!.. no lo probé en lo mas mínimo
Por otro lado, te cuento que si te fijas en el primer hilo recomiendo unos componentes míos que hacen esta tarea, por desgracia no puedo publicar el código..

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 07-12-2005
Iceman Iceman is offline
Miembro
 
Registrado: ago 2003
Ubicación: Tierra del Fuego
Posts: 25
Poder: 0
Iceman Va por buen camino
Gracias Federico:
probe de usar tu componente TDataToAscii de las ExportSuite. Lamentablemente no encuento la forma de configurarlo para que respete el anch o de los campos. Me podrias indicar por favor que propiedades debo setear para lograrlo.

Gracias
__________________
Desde el fin del mundo....
Responder Con Cita
  #4  
Antiguo 07-12-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Si defines un campo (en el componente) con la propiedad FixedLength <> 0, escribirá siempre ese campo respetando ese ancho, tenga o no separadores de campos el archivo.
¿Probaste el código de la respuesta anterior?


Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 01:53:48.


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