Como ler de um txt e gravar no meu banco ?
29/03/2017
0
Desde já agradeço!
Rodrigo Oliveira
Posts
29/03/2017
Wazowski
2 - Cria uma conexão com o banco.
3 - Cria uma query. Insere os valores da stringlist com commandText ou com clientDataSet
29/03/2017
Rodrigo Oliveira
MG@nm@@nm@Washington Ribeiro@nm@37072030@nm@Varginha@nm@Distrito Industrial Miguel de Luca@nm@Avenida @nm@@nm@
eu quero pegar esses campos do txt em separado e jogar em uma tabela no meu banco
29/03/2017
Wazowski
Se tu der um open e ele passar de boa já é meio caminho andado.
Depois tu cria uma query (TSQLDataSet ou TSQLQuery) e liga no tsqlconnection.
Criar uma stringlist e da um loadFromFile e passa o caminho do teu arquivo.
Passa o text da stringlist pra um array com o SplitString (uses StrUtils)
Ai tu monta o sql no command text da tua query
Query.Close; Query.CommandText:= 'Insert into TMINHA_TABELA (val1, val2, val3.. valn) values (' + Array[0] + ',' + Array[1] + ',' ... Array[n] + ')'; Query.ExecSQL;
A parte mais chata é conectar no banco...
30/03/2017
Rodrigo Oliveira
30/03/2017
Wazowski
30/03/2017
Rodrigo Oliveira
30/03/2017
Wazowski
Vamos lá... o SplitString serve para separar uma string em varias strings menores, mas pra isso tu precisa de um separador pra função saber como cortar o texto.
Ex:
var wTexto: String; wInformacoes: TStringDynArray; wNome, wIdade, wCidade, wUF, wPais: String; begin wText:= 'Maicon|21|Blumenau|SC|Brasil'; wInformacoes:= SplitString(wText, '|'); // parametro 1: texto que eu quero dividr, parametro 2: separador usado, ret: array de palavras wNome:= wInformacoes[0]; wIdade:= wInformacoes[1]; wCidade:= wInformacoes[2]; wUF:= wInformacoes[3]; wPais:= wInformacoes[4]; end;
Pra carregar teu arquivo:
var wSL: TStringList; wText: String; begin wSL:= TStringList.Create; wSL.LoadFromFile('C:\\MinhaPast\\MeuArquivoTexto.txt'); wText:= wSL.Text; wSL.Free;
30/03/2017
Rodrigo Oliveira
procedure TForm1.Button3Click(Sender: TObject); var f:TextFile; linha:String; Lista:TStrings; begin Lista:=TStringList.Create; AssignFile(f,'C:\\trabalho\\Rodrigo\\cep_logradouros_mg.txt'); Reset(f); //abre o arquivo para leitura; Lista.DelimitedText:='@nm@'; While not eof(f) do begin Readln(f,linha); //le do arquivo e desce uma linha. O conteúdo lido é transferido para a variável linha memo1.lines.add(linha); label1.caption := linha; End; Closefile(f); end;
Estou conseguindo jogar a linha toda no meu memo porém gostaria de saber como faço para usar um delimiter que no meu caso seria o @nm@ para separar os campos do txt ?
30/03/2017
Wazowski
Teu código não ta correto. DelimitedText da stringlist não serve pra separar nada. Tu ta carregando o teu arquivo numa string e lendo a string, por isso nao ta funcionando.
procedure TForm1.Button3Click(Sender: TObject); var linha:String; Lista:TStrings; ArrayPalavras: TStringDynArray; begin Lista:=TStringList.Create; Lista.LoadFromFile(''C:\\\\zz.txt''); ArrayPalavras:= SplitString(Lista.Text, ''@nm@''); for linha in ArrayPalavras do begin memo1.lines.add(linha); label1.caption := linha; End; end;
30/03/2017
Rodrigo Oliveira
30/03/2017
Daniel Araújo
Faz o exemplo desse artigo e depois tenta aplicar no teu projeto:
https://xucro.wordpress.com/tag/separar-string-por-delimitador/
Daniel Araújo
Sombra Tecnologia
Consultoria e Desenvolvimento de Sistemas
sombra.tecnologia@gmail.com
55 85 98135-5516
Clique aqui para fazer login e interagir na Comunidade :)