Copiar conteúdo de txt para BD
Olá colegas,
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;
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
Curtidas 0
Respostas
Marco Salles
01/05/2005
Eu acho que o erro Possivelmente a erro nas nas instruçoes Copy:
Codigo Original
;
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;
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
Clenio
01/05/2005
Olá,
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.
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
Marco Salles
01/05/2005
Olá,
Fiz as alterações mas, infelismente não deu certo, fico na esperaça que alguém possa me ajudar
. 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...
Table1Nome.Value:= Copy(Entrada,2,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
Marco Salles
01/05/2005
Fiz rapidamente aqui um programinha para ler um dado qualquer ,
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
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
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
Clenio
01/05/2005
Olá, parece que estou dando muito trabalho ne, desculpa.
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.
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
Marco Salles
01/05/2005
Tente isto :
[b:664c214764][color=darkred:664c214764]Favor postar o resultado[/color:664c214764][/b:664c214764]
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
Clenio
01/05/2005
Marco Salles,
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]
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