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
desde já agradeço
Cleiton Maciel :o
Cleiton.maciel
Curtir tópico
+ 0
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;
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
Clique aqui para fazer login e interagir na Comunidade :)