Não sou muito de fazer esse tipo de coisa, mas aí vai a receita de bolo 
pronta (pra quem não quer ter trabalho e querer tudo mastigado!)

{ A partir de uma tabela paradox ativa em um TTable, exporta o seu conteúdo
  atual para um arquivo texto padrão CSV. Precisa das units DB e DBTables }
procedure PDoxToCSV(ATable: TTable; const CsvFilePath: String);
const
  { Tipos de dados que não são permitidos na exportação de dados }
  AFieldTypesNotAllowed: set of TFieldType =
    [ftUnknown, ftBytes, ftVarBytes, ftBlob, ftGraphic, ftParadoxOle,
     ftDbaseOle, ftTypedBinary, ftCursor, ftADT, ftArray, ftReference,
     ftDataSet, ftOraBlob, ftOraClob, ftVariant, ftInterface,
     ftIDispatch, ftGuid];

  { Tipos para tratamento de campos de ponto flutuante }
  AFieldFloatTypes: set of TFieldType =
    [ftFloat, ftCurrency, ftBCD, ftFMTBcd];

  { Tipos para tratamento de campos string }
  AFieldStringTypes: set of TFieldType =
    [ftString, ftMemo, ftFixedChar, ftWideString];
var
  lBookmark: TBookmark;
  lFld, lFldCount: Integer;
  ACsvFile, ACsvRow: TStringList;
  AFieldTypesNotAllowed: set of TFieldType;
  AFieldFloatTypes: set of TFieldType;
  lFieldData: String;
begin
  lBookmark := ATable.GetBookmark;
  while not ATable.ControlsDisabled do
    ATable.DisableControls;
  ATable.First;

  Screen.Cursor := crHourGlass;
  ACsvFile := TStringList.Create;
  ACsvRow := TStringList.Create;
  ACsvRow.Delimiter := ',';

  try
    { Cabeçalho de um CSV sempre terá o nome dos campos. Ao mesmo tempo,
      checa se os campos possuem tipos de dados válidos para exportação. }
    lFldCount := ATable.FieldCount;
    for lFld := 0 to lFldCount - 1 do
    begin
      if ATable.Fields[lFld].FieldType in AFieldTypesNotAllowed then
        raise Exception.CreateFmt('Table %s has fields with not supported 
data types.');
      ACsvRow.Add(ATable.Fields[lFld].FieldName);
    end;
    ACsvFile.Add(ACsvRow.DelimitedText);

    { As próximas linhas do CSV correspondem às linhas de dados }
    while not ATable.Eof do
    begin
      ACsvRow.Clear;
      for lFld := 0 to lFldCount - 1 do
      begin
        lFieldData := ATable.Fields[lFld].AsString;
        if ATable.Fields[lFld].FieldType in AFieldFloatTypes then
          lFieldData := StringReplace(lFieldData, ',', '.', [rfReplaceAll])
        else if ATable.Fields[lFld].FieldType in AFieldStringTypes then
          lFieldData := StringReplace(lFieldData, #32, #255, 
[rfReplaceAll]);
        ACsvRow.Add(lFieldData);
      end;
      ACsvRow.DelimitedText := StringReplace(lFieldData, #255, #32, 
[rfReplaceAll]);
      ACsvFile.Add(ACsvRow.DelimitedText);
      ATable.Next;
    end;
    ACsvFile.SaveToFile(CsvFilePath);
  finally
    ATable.GotoBookmark(lBookmark);
    ATable.FreeBookmark(lBookmark);
    while ATable.ControlsDisabled do
      ATable.EnableControls;
    Screen.Cursor := crDefault;
  end;
end;

Sds.

>From: "Welson Tavares" <[EMAIL PROTECTED]>
>Reply-To: delphi-br@yahoogrupos.com.br
>To: delphi-br@yahoogrupos.com.br
>Subject: [delphi-br] Paradox -> CSV
>Date: Mon, 19 Feb 2007 15:48:47 -0200
>
>Boa tarde,
>
>   Alguém tem alguma aplicação/rotina que leia os dados de uma tabela do
>Paradox e salve os dados como CSV?
>
>Valeu
>
>Welson Tavares
>
>
>[As partes desta mensagem que não continham texto foram removidas]
>

_________________________________________________________________
MSN Busca: fácil, rápido, direto ao ponto.  http://search.msn.com.br

Responder a