Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Exportar de Tabla a TXT con longitud fija (https://www.clubdelphi.com/foros/showthread.php?t=28033)

Iceman 07-12-2005 13:11:07

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

delphi.com.ar 07-12-2005 13:53:01

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!

Iceman 07-12-2005 18:00:32

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

delphi.com.ar 07-12-2005 18:52:36

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!


La franja horaria es GMT +2. Ahora son las 16:04:49.

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