GARANTIR DESCONTO

Fórum Importar TXT com ponto e virgula #254953

18/10/2004

0

Gostaria de saber se entre os colegas, alguem ja importou um txt separado por ponto e virgulas, ou seja:
0001 ;Antônio Carlos da Silva ;02/12/1974 ;895623124-54 ;
0002 ;Maria José Pereira ;05/11/1954 ;789456123-00 ;
.
.
.
Com os campos concatenados seria mais fácil, mas com o ponto e virgula está meio complicado, gostaria que alguem me ajudasse, pois preciso disso urgente.

Atenciosamente,

Andre Luis - Leitbom


Andre Silveira

Andre Silveira

Responder

Posts

18/10/2004

Osocram

vc pod usar a func ´pos´ ele retorna a posicao d uma substring em uma string. se trazer 0 ou -1 non lembro bem.. enton no achou...

no ex:
aux := 0001 ;Antônio Carlos da Silva ;02/12/1974 ;895623124-54 ;

vc faria um proc ou function q pega a primeira SubString
por ex
if pos(aux,´;´)>0 then
resultado := copy(aux,1,pos(aux,´;´) //aqui vc copia sua string (non lembro a sintaxe.... pois estou sem o delphi agora p testar)
resto := copy(aux,pos(aux,´;´)+1,Lenght(aux) //aqui vc o q restou da string... dae eh so mandar dnovo na func ateh acabar ela.... pod fazer um func recursiva e talz...

acho q isso...


Responder

Gostei + 0

18/10/2004

Aroldo Zanela

[quote:01a41e4f9c=´Andre Silveira´]Gostaria de saber se entre os colegas, alguem ja importou um txt separado por ponto e virgulas, ou seja:
0001 ;Antônio Carlos da Silva ;02/12/1974 ;895623124-54 ;
0002 ;Maria José Pereira ;05/11/1954 ;789456123-00 ;
.
.
.
Com os campos concatenados seria mais fácil, mas com o ponto e virgula está meio complicado, gostaria que alguem me ajudasse, pois preciso disso urgente.

Atenciosamente,

Andre Luis - Leitbom[/quote:01a41e4f9c]
Colega,

A partir da versão Delphi 6 é mais fácil ainda, mesmo assim, veja o detalhamento nesta thread. http://delphiforum.icft.com.br/forum/viewtopic.php?t=43243&highlight=explode


Responder

Gostei + 0

18/10/2004

Rjun

Utilize ADO. Adicione um TADOCONNECTION e um TADOTABLE no seu form. Configure o ConnectionString do TADOCONNECTION com o provedor OLE DB para Jet 4.0. Na aba TODAS coloque Text para a propriedade EXtended Properties. Na aba CONEXAO coloque o diretorio em que se encontra o arquivo texto. Agora no TADOTABLE, selecione na propriedade TABLE o nome do arquivo. Pronto, agora é so inserir os campos do seu arquivo texto. Pra voce ter uma boa visao, coloque um DBGRID e um TDATASOURCE ligando ao TADOTABLE.


Responder

Gostei + 0

19/10/2004

Ilanocf

Fiz isso utilizando tabelas MySQL:

[color=red:b19750ac30][b:b19750ac30]EXPORTAR DADOS[/b:b19750ac30][/color:b19750ac30] Coloque 4 componentes: 1) OpenDialog1: Altere as propriedades: DefaultExt: TXT e Filter: Arquivo Texto|*.TXT; 2) SaveDialog1: Altere as propriedades: DefaultExt: TXT e Filter: Arquivo Texto|*.TXT; 3) Tabelas; 4) Botão e renomeie-o para ButExporta, e em seu evento OnClique o código abaixo, alterando apenas os nomes das tabelas e seus respectivos campos. procedure TForm1.ButExportaClick(Sender: TObject); var Arq: TextFile; begin if SaveDialog1.Execute then begin Screen.Cursor := crHourGlass; with Table1 do begin Open; First; if not EOF then begin AssignFile(Arq, SaveDialog1.FileName); ReWrite(Arq); repeat WriteLn(Arq,FieldByName(´EmpNo´).AsString + ´|´ + FieldByName(´LastName´).AsString + ´|´ + FieldByName(´FirstName´).AsString + ´|´ + FieldByName(´PhoneExt´).AsString + ´|´ + FieldByName(´HireDate´).AsString + ´|´ + FieldByName(´Salary´).AsString + ´*´); next; until EOF; CloseFile(Arq); end; close; end; Screen.Cursor := crDefault; end; end;



[color=red:b19750ac30][b:b19750ac30]IMPORTAR DADOS[/b:b19750ac30][/color:b19750ac30] Coloque 4 componentes: 1) OpenDialog1: Altere as propriedades: DefaultExt: TXT e Filter: Arquivo Texto|*.TXT; 2) SaveDialog1: Altere as propriedades: DefaultExt: TXT e Filter: Arquivo Texto|*.TXT; 3) Tabelas; 4) Botão e renomeie-o para ButImporta, e em seu evento OnClique o código abaixo, alterando apenas os nomes das tabelas e seus respectivos campos procedure TForm1.ButImportaClick(Sender: TObject); var Arq: TextFile; Texto: String; I: Integer; function MontaVariavel: String; var monta: String; begin monta := ´´; inc(I); while Texto[I] <> ´*´ do begin if Texto[I] = ´|´ then break; monta := monta + Texto[I]; inc(I); end; result := monta; end; begin if OpenDialog1.Execute then begin Screen.Cursor := crHourGlass; Table1.Open; AssignFile(Arq, OpenDialog1.FileName); Reset(Arq); if not EOF(Arq) then repeat ReadLn(Arq,Texto); with Table1 do begin Insert; i := 0; FieldByName(´EmpNo´).AsString := MontaVariavel; FieldByName(´LastName´).AsString := MontaVariavel; FieldByName(´FirstName´).AsString := MontaVariavel; FieldByName(´PhoneExt´).AsString := MontaVariavel; FieldByName(´HireDate´).AsString := MontaVariavel; FieldByName(´Salary´).AsString := MontaVariavel; Post; end; until EOF(Arq); CloseFile(Arq); Table1.Close; Screen.Cursor := crDefault; end; end;


Espero ter ajudado.


Responder

Gostei + 0

27/05/2005

Vagner.oliveira

amigo, o código para importar os dados da o seguinte erro:
[b:b640a9abb2]Acces Violation at adress 004AB571 in module ´project1.exe´ read of adress FFFFFFFF [/b:b640a9abb2]

o erro ocorre na seguinte linha:
[b:b640a9abb2]while Texto[I] <> ´*´ do[/b:b640a9abb2]

a dica é boa, não consegui identificar o erro


Responder

Gostei + 0

27/05/2005

Marco Salles

[b:b56af73711]amigo tente isso , talves le sirva[/b:b56af73711]


[code]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;
  j:=j+i;
  Table1UF.Value:= Copy(Entrada,j,tamanho-1);//cpf;
  Table1.Post;
End; 
CloseFile(TXT);
end;[/code]



Responder

Gostei + 0

27/05/2005

Vagner.oliveira

da erro ao compilar:
undeclared identifier: ´Value´ na linha

Table1.Value:=Copy(Entrada,j,i-1);//nome; e todas que possui o item Value


Responder

Gostei + 0

27/05/2005

Marco Salles

da erro ao compilar: undeclared identifier: ´Value´ na linha Table1.Value:=Copy(Entrada,j,i-1);//nome; e todas que possui o item Value


Aqui eu te dei uma idéia de como usar , utilizando um componente Table

Eu não sei direito o que voce quer fazer com cada campo que voce esta lendo.. Voce deve armazenalo em algum lugar???

usei o table , foi como exemplo



Responder

Gostei + 0

27/05/2005

Vagner.oliveira

tenho um arquivo TXT na seguinte forma:

 
nome ; endereço ; telefone ; telcel ;
nome ; endereço ; telefone ; telcel ;
nome ; endereço ; telefone ; telcel ;


e quero importá-lo para dentro de uma tabela, o comando para exportar informado acima funciona beleza, só da erro ao tentar importar.


Responder

Gostei + 0

27/05/2005

Marco Salles

tenho um arquivo TXT na seguinte forma: Código: nome ; endereço ; telefone ; telcel ; nome ; endereço ; telefone ; telcel ; nome ; endereço ; telefone ; telcel ;



:arrow: Amigo rode o exemplo e informe o que ira ocorrer

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; 
  Showmessage(´Codigo : ´+Copy(Entrada,j,i-j));//Codigo;
  J:=J+i; 
  i:=Pos(´;´,copy(entrada,j,Tamanho)); 
 // Table1Nome.Value:=Copy(Entrada,j,i-1);//nome; 
  Showmessage(´Nome : ´+Copy(Entrada,j,i-j));// nome;
  j:=j+i; 
  i:=Pos(´;´,copy(entrada,j,Tamanho)); 
 // Table1DataNasc.Value:=StrToDate(Copy(Entrada,j,i-1));//Data;
  Showmessage(´Telefone : ´+Copy(Entrada,j,i-j);//Telefone; 
  j:=j+i; 
 // Table1UF.Value:= Copy(Entrada,j,tamanho-1);//Telcel; 
  showmessage(´ Tel celular ´+Copy(Entrada,j,tamanho-1));// tel celular
//  Table1.Post; 
End; 
CloseFile(TXT); 
end;


alem disso amigo , se o codigo leu direitinho o seu arquivo txt , separado por virgula, importa-lo para um tabela de um banco é um outro passo.

Voce deve informar qual o banco que voce usa , se a Estrutura dessa tabela nesse banco ja foi criada e é a mesma ta estrutrura do arquivo Txt e qual o componente de acesso que voce pretende usar


entendeu :?: :?: :?:


Responder

Gostei + 0

30/05/2005

Vagner.oliveira

:shock: Amigo, seu código ta fionando, mas tem aguns erros a serem corrigidos, como não entendo muito de Delphi, peço que descreva o que cada linha do código faz, para que possa entender o código e corrigir :)


Responder

Gostei + 0

30/05/2005

Vagner.oliveira

está dando erro na linha
   Table1.Value:=Copy(Entrada,j,i-j); 


minha tabela é em Paradox:
[b:f9b4e62f56]
Indice: Autoincremento
Nome: Alpha
Endereço: Alpha
Telefone: Alpha
TelCel: Alpha
Orçamento: Memo
Histórico: Memo
[/b:f9b4e62f56]


Responder

Gostei + 0

31/05/2005

Marco Salles

Amigo, seu código ta fionando, mas tem aguns erros a serem corrigidos, como não entendo muito de Delphi, peço que descreva o que cada linha do código faz, para que possa entender o código e corrigir


minha tabela é em Paradox: Indice: Autoincremento Nome: Alpha Endereço: Alpha Telefone: Alpha TelCel: Alpha Orçamento: Memo Histórico: Memo


Voce deve inseriri um componente Table no seu aplicativo e usar a Sintaxi abaixo

está dando erro na linha Código: Table1.Value:=Copy(Entrada,j,i-j);


Ao inves disso , voce deve substituir pela seguinte instrução:

Table1.FieldByName(´NomeDoCampoConformeEstaEscritoNaTabela´).AsSTring:=Copy(Entrada,j,i-j);


Entendeu Beleza :?: :?: :?:


Responder

Gostei + 0

31/05/2005

Vagner.oliveira

:shock: :shock:

eu não consigo entender nessa linha os itens:
[b:d73c3652fd]
Entrada:String;
I:Integer;
j:Integer;
Tamanho:Integer;
[/b:d73c3652fd]

 
.
.
.
  tamanho:=Length(entrada);
  j:=1;
  i:=Pos(´;´,entrada);

//  Table1.FieldByName(´Nome´).Value:=Copy(Entrada,j,i-1);
  Showmessage(´Nome : ´+Copy(Entrada,j,i-j));
  j:=j+i;
  i:=Pos(´;´,copy(entrada,j,Tamanho));
.
.
.

o que que faz os itens [b:d73c3652fd]entrada, tamanho, j, i [/b:d73c3652fd] :shock: :shock:


Responder

Gostei + 0

31/05/2005

Vagner.oliveira

Pessoal já sei como posso fazer par importar os dados, apenas preciso saber como identificar o ponto e virgula (;) para que passe para o próximo campo da tabela...... :P :P :P


Responder

Gostei + 0

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

Aceitar