Fórum Db para TXT ou DB p/ DBF #148252

21/03/2003

0

Pessoal tenho uma tabela em paradox e quero converter ela para TXT ou para DBF. Por acaso vc teria alguma rotina que podesse me ajudar. ou até mesmo um programa?

desde já agradeço
Cleiton Maciel :o


Cleiton.maciel

Cleiton.maciel

Responder

Posts

21/03/2003

Anonymous

Procedure Gera_Arquivo_Texto(DataSet: TDatset;Nomearq: String);
Var Registros : TstringsList:
Linha.Espacos,Diretorio : String
TamanhoMaximo, i, j : Integer

Begin
TamanhoMaximo := 0; Diretorio := ´´;
Registros := TstringList.Create;
DataSet.Open;
DataSet.First;
Try
While Not DataSet.Eof do Begin
Linha := ´´;
For i : 0 To DataSet.FieldCount - 1 do Begin
Espacos := ´´;
TamanhoMaximo := DataSetFields[i].DisplayWidth;
For J := Length(DataSet.Fields[i].AsString) to TamanhoMaximo do
Espacos := Espacos + ´ ´;
Linha := Linha + DataSet.Fields[i].AsString + Espacos;
End;
Registros.Add(Linha);
DataSet.Next;
End;
Diretorio := ExtractFilePath(Application.ExeName)+´ArquivoTexto´;
IF Not DirectoryExists(Diretorio) Then
ForcDirectories(Diretorio);
Registros.SaveToFile(Diretorio+´\´+NomeArq+´.txt´;
Application.MessageBox(Pchar(´Tabela ´+DataSet.Name+´ Exportada.´),Aviso,Mb_ok);
Finally
Registros.Free;
DataSet.Close;
End;
End;

//***********
procedure Ler_TXT_p_ARQUIVO;
//***********
var

Txt : TextFile;
Entrada : String;
begin
FORM1.TABLE1.EmptyTable; //...Zera o arquivo
FORM1.Table1.Open;

Assignfile(Txt,´Clientes.Txt´); //...nome do arquivo texto

Reset(Txt);
While not Eoln(Txt) do
begin
Readln(Txt,Entrada);
FORM1.Table1.Insert;
FORM1.Table1.FieldByName(´Codigo´).Value := STRTOINT(Copy(Entrada,01,05));
FORM1.Table1.FieldByName(´Nome´).Value := Copy(Entrada,07,46);
FORM1.Table1.FieldByName(´End´).Value := Copy(Entrada,48,46);
FORM1.Table1.Post;
end;
CloseFile(Txt);
FORM1.Table1.Close;
end;


Responder

Gostei + 0

21/03/2003

Aroldo Zanela

Pessoal tenho uma tabela em paradox e quero converter ela para TXT ou para DBF. Por acaso vc teria alguma rotina que podesse me ajudar. ou até mesmo um programa? desde já agradeço Cleiton Maciel :o

Cleiton,

Respondi isso ontem a noite. Não sei pra quem, mas vamos lá de novo:

- Coloque dois objetos TTable no formulário e um TButton;
- Na primeira table deve-se alterar as seguintes propriedades:

DatabaseName -> informar o alias ou diretório da tabela paradox;
Name -> Nome do objeto table, por exemplo: tbParadox;
TableName -> Nome da tabela paradox de origem (leitura);

- Na segunda table deve-se alterar as seguintes propriedades:

DatabaseName -> Informar o diretório onde será criado o txt;
Name -> Nome do objeto table, por exemplo: tbTexto
[b:67b6e53aa5]StoreDefs -> true;[/b:67b6e53aa5] // Aqui é o ´pulo do gato´
TableName -> Nome do arquivo texto que será gerado (escrita);
TableType -> ttASCII;

A única linha de código que você precisa escrever é:


procedure TForm1.Button1Click(Sender: TObject);
begin
tbTexto.BatchMove(tbParadox,batCopy);
end;


Veja o DFM construído para o exemplo:

Basta criar um novo projeto, copiar o código abaixo (marcar e CTRL C), ir para o projeto (vendo o formulário) e pressionar CTRL V para ´desenhar´ o exemplo.

  object Button1: TButton
    Left = 80
    Top = 164
    Width = 75
    Height = 25
    Caption = ´Button1´
    TabOrder = 0
    OnClick = Button1Click
  end
  object tbParadox: TTable
    DatabaseName = ´DBDEMOS´
    TableName = ´country.db´
    Left = 110
    Top = 72
  end
  object tbTexto: TTable
    DatabaseName = ´C:\WINDOWS\TEMP´
    StoreDefs = True
    TableName = ´ARQUIVO.TXT´
    TableType = ttASCII
    Left = 278
    Top = 70
  end



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar