Ver Mensaje Individual
  #2  
Antiguo 25-02-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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;

  (* línea de nombres de campos *)
  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
Responder Con Cita