Fórum Copiar conteúdo de txt para BD #279666
01/05/2005
0
Estou tentando copiar o conteúdo de um arquivo txt para uma tabela ( a tabela é paradox)
As linhas do arquivo txt estão assim:
123456789012345|MARIA DA SILVA|26/03/1964|F|15/03/2005|GOIANIA|GO
123453698745698|JOSE RODRIGUES GOMES|15/08/1976|M|123/04/2005|GOIANIA|GO
...............
Mas quando clico no botão para executar a cópia para a tabela, os registros são gravados em todos os campos, Por exemplo:
No campo numero sai assim:
123456789012345|MARIA DA SILVA|26/03/1964|F|15/03/2005|GOIANIA|GO
No campo Nome sai do mesmo jeito;
123456789012345|MARIA DA SILVA|26/03/1964|F|15/03/2005|GOIANIA|GO
sendo que deveria sair assim:
no campo Numero: [b:5b0483d5dd]123456789012345[/b:5b0483d5dd]
no campo Nome assim: [b:5b0483d5dd]MARIA DA SILVA[/b:5b0483d5dd]
e assim sucessivamente.
o que será que está errado no codigo que estou usando?
segue abaixo o codigo.
fico no aguardo da ajuda de todos, desde ja meus agradecimentos.
procedure TForm1.Button1Click(Sender: TObject);
var
TXT : TextFile;
Entrada: String;
I : Integer;
Begin
AssignFile(TXT,´C:\TEXTO\Texto\Texto.TXT´); // Diretorio onde se encontra o arquivo .TXT
Reset(TXT);
While not Eof(TXT) do
Begin
ReadLn(TXT,Entrada); //Variável que vai receber linha a linha as informações do arquivo TXT
Table1.Insert;
Table1Numero.Value:= Copy(Entrada,1,15);
Table1Nome.Value:= Copy(Entrada,2,50);
Table1DataNasc.Value:= Copy(Entrada,03,10);
Table1Sexo.Value:= Copy(Entrada,04,02);
Table1DataEmis.Value:= Copy(Entrada,05,10);
Table1Municipio.Value:= Copy(Entrada,06,50);
Table1UF.Value:= Copy(Entrada,07,02);
Table1.Post;
End;
CloseFile(TXT);
end;
Clenio
Curtir tópico
+ 0Posts
01/05/2005
Marco Salles
Codigo Original
Table1Numero.Value:= Copy(Entrada,1,15); Table1Nome.Value:= Copy(Entrada,2,50); Table1DataNasc.Value:= Copy(Entrada,03,10); Table1Sexo.Value:= Copy(Entrada,04,02); Table1DataEmis.Value:= Copy(Entrada,05,10); Table1Municipio.Value:= Copy(Entrada,06,50); Table1UF.Value:= Copy(Entrada,07,02); Table1.Post
Novo Codigo
Table1Numero.Value:= Copy(Entrada,1,15);
Table1Nome.Value:= Copy(Entrada,16,50);
Table1DataNasc.Value:= Copy(Entrada,67,10);
Table1Sexo.Value:= Copy(Entrada,78,02);
Table1DataEmis.Value:= Copy(Entrada,81,10);
Table1Municipio.Value:= Copy(Entrada,92,50);
Table1UF.Value:= Copy(Entrada,143,02);
Table1.Post;
Gostei + 0
01/05/2005
Clenio
Fiz as alterações mas, infelismente não deu certo, fico na esperaça que alguém possa me ajudar.
Valeu pela boa intenção.
Gostei + 0
01/05/2005
Marco Salles
A dica que passei para voce ,[b:706dfc6418] foi apenas uma idéia [/b:706dfc6418]....
:arrow: Depende muito de como esta seu arquivo Texto
Por exemplo , Da para entender que voce separou para o Nome uma string de tamanho 50...
Então , com estão prenchidos os nomes no arquivo txt, :?:
:?: voce esta preenchendo-os com o espaço , para completar 50 ou voce esta usando um delimator, para informar que é o fim do Campo :?:
:arrow: Depende tb de com esta configurado os campos de sua base de dados
Olhando a sua entrada , da para perceber entender , que voce usa o Caracter ´[size=18:706dfc6418][color=darkred:706dfc6418][b:706dfc6418]|[/b:706dfc6418][/color:706dfc6418][/size:706dfc6418]´ , para separar os campos... é isto mesmo :?: :?:
Em outras palavras, o que voce quer , aparentemente não é dificil mas tem que informar algo mais.... Como esta seu arquivo Txt, se voce usa algum caracter especial para separar os campos, como estão definidos os seus campos na sua base de dados... enfim...
Gostei + 0
01/05/2005
Marco Salles
usando o caracter ´[size=18:6de3208aa8][color=red:6de3208aa8][b:6de3208aa8]|[/b:6de3208aa8][/color:6de3208aa8][/size:6de3208aa8]´ como delimitador de fim de campo...
Este exemplo pode ser facilmente adaptado para ás suas necessidades
procedure TForm1.Button2Click(Sender: TObject); var Entrada: String; I : Integer; j:Integer; tamanho:Integer; begin entrada:=´123456789012345|MARIA DA SILVA|26/03/1964|F|15/03/2005|GOIANIA|GO´; tamanho:=Length(entrada); j:=1; i:=Pos(´|´,entrada); Showmessage(Copy(Entrada,j,i-j));//Codigo; J:=J+i; i:=Pos(´|´,copy(entrada,j,Tamanho)); Showmessage(Copy(Entrada,j,i-1));//nome; j:=j+i; i:=Pos(´|´,copy(entrada,j,Tamanho)); Showmessage(Copy(Entrada,j,i-1));//Data de Nascimento; j:=j+i; i:=Pos(´|´,copy(entrada,j,Tamanho)); Showmessage(Copy(Entrada,j,i-1));//Sexo j:=j+i; i:=Pos(´|´,copy(entrada,j,Tamanho)); Showmessage(Copy(Entrada,j,i-1));//DataDeEmissão; j:=j+i; i:=Pos(´|´,copy(entrada,j,Tamanho)); Showmessage(Copy(Entrada,j,i-1));//Municipio; j:=j+i; Showmessage(Copy(Entrada,j,tamanho-1));//estado; end;
Rode e teste o Exemplo
:wink: P:s No Ultimo campo , o do estado , não tem Delimatador, de fato não precisa ter
Se não consegui , adapatar á sua necessidade , não se intimide , o forum serve é para esclarecer ás dúvidas
Gostei + 0
01/05/2005
Clenio
Vou detalhar aqui como estão a tabela e o Arquivo txt.
Os campos da base de dados estão assim:
Numero= Alpha 15
Nome= Alpha 50
DataNasc= Date
Sexo= Alpha 1
DataEmis= Date
Municipio= Alpha 30
UF= Alpha 2
No arquivo txt estou usando o [b:ee0f33baf2]Caracter ´|´ , para separar os campos[/b:ee0f33baf2],
as duas primeiras linhas do arquivo são estas abaixo:
123456789012345|MARIA DA SILVA|26/03/1964|F|15/03/2005|GOIANIA|GO
123453698745698|JOSE RODRIGUES|15/08/1976|M|123/04/2005|GOIANIA|GO
Espero que desta vez eu tenha explicado direitinho.
Obrigado por tudo.
Gostei + 0
01/05/2005
Marco Salles
procedure TForm1.Button1Click(Sender: TObject); var TXT : TextFile; Entrada: String; I : Integer; j:Integer; Tamanho:Integer; Begin AssignFile(TXT,´C:\TEXTO\Texto\Texto.TXT´); // Diretorio onde se encontra o arquivo .TXT Reset(TXT); While not Eof(TXT) do Begin ReadLn(TXT,Entrada); //Variável que vai receber linha a linha as informações do arquivo TXT Table1.Insert; tamanho:=Length(entrada); j:=1; i:=Pos(´|´,entrada); Table1Numero.Value:=Copy(Entrada,j,i-j);//Codigo; J:=J+i; i:=Pos(´|´,copy(entrada,j,Tamanho)); Table1Nome.Value:=Copy(Entrada,j,i-1);//nome; j:=j+i; i:=Pos(´|´,copy(entrada,j,Tamanho)); Table1DataNasc.Value:=StrToDate(Copy(Entrada,j,i-1));//Data de Nasci; j:=j+i; i:=Pos(´|´,copy(entrada,j,Tamanho)); Table1Sexo.Value:=Copy(Entrada,j,i-1);//Sexo j:=j+i; i:=Pos(´|´,copy(entrada,j,Tamanho)); Table1DataEmis.Value:=StrToDate(Copy(Entrada,j,i-1));//DataDeEmiss; j:=j+i; i:=Pos(´|´,copy(entrada,j,Tamanho)); Table1Municipio.Value:= Copy(Entrada,j,i-1);//Municipio; j:=j+i; Table1UF.Value:= Copy(Entrada,j,tamanho-1);//estado; Table1.Post; End; CloseFile(TXT); end;
[b:664c214764][color=darkred:664c214764]Favor postar o resultado[/color:664c214764][/b:664c214764]
Gostei + 0
01/05/2005
Clenio
Não tenho palavras para agradecer, [b:c943dac2c6]funcionou perfeitamente[/b:c943dac2c6], ainda bem que aqui no forum existem muitas pessoas assim como você, que sabe muito e tem boa vontade em ajudar aos que ainda estão em fase de aprendizado, assim como eu.
[b:c943dac2c6]Muito obrigado, [/b:c943dac2c6]
[color=blue:c943dac2c6]O resultado foi perfeito.[/color:c943dac2c6][size=18:c943dac2c6][/size:c943dac2c6]
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)