Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   pasar un registro completo a un archivo txt (https://www.clubdelphi.com/foros/showthread.php?t=75346)

pmtzg 16-08-2011 07:14:42

pasar un registro completo a un archivo txt
 
una vez consultando a los grandes gurus de este sitio

si yo quisiera grabar en un archivo de texto una consulta de registros

como los podria pasar

Código Delphi [-]
table2.Fields[i].Value := query2.Fields[i].Value;


y el resultado lo deseo guardar en un archivo de texto

Código Delphi [-]
table2.Fields[i].Value


es posible ????


gracias por toda su ayuda !!!

ecfisa 16-08-2011 08:50:13

Hola pmtzg.

Espero no haber supuesto mal en que buscas copiar todos los registros de la tabla a un archivo de texto y no uno sólo...

Este código lo va a realizar con cualquier descendiente de TDataSet (TIBDataSet, TIBQuery,TIBTable,TADOQuery,...,TTable), lo comenté lo mejor que pude:
Código Delphi [-]
procedure PasarATexto(ADataSet: TDataSet; const Destino: string);
var
  BM: TBookMarkStr;
  TF: TextFile;
  i: Integer;
  r,s: string;
begin
  AssignFile(TF, Destino);       // Asociar variable con nombre de arhivo
  try
    Rewrite(TF);                 // Crear archivo y abrir
    try
      BM:= ADataSet.Bookmark;    // Salvar posición actual en TDataSet
      AdataSet.DisableControls;  // Desactivar presentación en controles
      ADataSet.First;            // Al primer dato
      while not ADataSet.Eof do
      begin
        s:= '';
        for i:= 0 to ADataSet.FieldCount -1 do
        begin
          // Llenar con espacios a la derecha y concatenar en s
          s:= s + ADataSet.Fields[i].AsString +
              StringOfChar(' ',ADataSet.Fields[i].DisplayWidth -
                           Length(ADataSet.Fields[i].AsString));
        end;
        Writeln(TF, s);          // Guardar línea de texto
        ADataSet.Next;           // Siguiente registro
      end;
    finally
      CloseFile(TF);
      ADataSet.Bookmark:= BM;    // Regresar a posición salvada
      AdataSet.EnableControls;   // Restaurar presentacion en controles
    end;
  except
    raise Exception.Create(SysErrorMessage(GetLastError));
  end;
end;
El argumento Destino deberá ser la suma de Ruta + Nombre_Archivo.
Usé BookmarkStr, DisableControls/EnableControls, por si estás mostrando los datos en algún control data-aware en ese momento. Pero si no es así podés quitar toda referencia a esas líneas.

Ejemplos de uso:
Código Delphi [-]
   PasarATexto(IBDataSet1, 'C:\Desde_IBDataSet.txt');
   PasarATexto(IBQuery1, 'C:\Desde_IBQuery.txt');
   ...

Un saludo.


La franja horaria es GMT +2. Ahora son las 00:53:09.

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