Mira a ver si te sirve esta rutina:
Código Delphi
[-]
procedure DataSetToText(DataSet: TDataSet; Lines: TStrings; Quote, Delimiter: String);
var
Line: String;
Value: String;
Index: Integer;
begin
Lines.BeginUpdate;
Lines.Clear;
DataSet.Open;
Line := '';
for Index := 0 to DataSet.FieldCount - 1 do
begin
Value := Quote + DataSet.Fields[Index].FieldName + Quote;
if Line = ''
then Line := Value
else Line := Line + Delimiter + Value;
end;
Lines.Add(Line);
DataSet.First;
while not DataSet.Eof do
begin
Line := '';
for Index := 0 to DataSet.FieldCount - 1 do
begin
Value := Quote + DataSet.Fields[Index].AsString + Quote;
if Line = ''
then Line := Value
else Line := Line + Delimiter + Value;
end;
Lines.Add(Line);
DataSet.Next;
end;
Lines.EndUpdate;
DataSet.Close;
end;
A esta rutina le pasas cualquier dataset (Table, Query, etc.) y un TStrings que puede ser un TStringList o la propiedad Lines de un Memo por ejemplo.
La rutina recorre todos los registros añadiendo una línea por cada uno. Cada valor estará encerrado entre lo que indiques en el parámetro Quote y los valores estarán separados por Delimiter.
Así, por ejemplo, pasando Quote='"' y Delimiter=',' obtendrás un archivo CSV que puedes abrir con Excel. O bien puedes pasar Quote='' y Delimiter=#9 y tendrás un archivo separado por tabuladores.
Para guardar el archivo usa el método SaveToFile de Lines.
// Saludos