LER ARQUIVO TXT E EXECUTAR A?ÃO PARA CADA LINHA
preciso de um apoio quanto a obtencao de um código que possa ler um arquivo txt tipo sintegra ou sped fiscal, que a cada linha lida ele possa fazer um loop se a codição do while for verdadeira, a ação seria texta o inicio do arquivo se o mesmo apresentar a informação tree, ele iria copiar uma quantidade x de caracteres numa determinada parte da linha e iria gravar em uma banco de dados no access, veja parte do arquivo:
60M20151201BE0511756100001113550012D00931500932800080600200000000003880000000000318699539
60A20151201BE0511756100001113551700000000388000
60I20151201BE0511756100001113552D00931800100000000000027000000005000000000000000000000000000001700000000000000
60I20151201BE0511756100001113552D00931900100000000000004000000002000000000000000000000000000001700000000000000
assim ele iria testa a existencia do registro 60 no inicio da linha, caso verdadeiro iria continuar a leitura da linha e a cada parte da mesma, conforme determinado, iria ler copia e gravar a informação que precisa, seguindo um layout de posicionamento
vou anexar um arquivo
60M20151201BE0511756100001113550012D00931500932800080600200000000003880000000000318699539
60A20151201BE0511756100001113551700000000388000
60I20151201BE0511756100001113552D00931800100000000000027000000005000000000000000000000000000001700000000000000
60I20151201BE0511756100001113552D00931900100000000000004000000002000000000000000000000000000001700000000000000
assim ele iria testa a existencia do registro 60 no inicio da linha, caso verdadeiro iria continuar a leitura da linha e a cada parte da mesma, conforme determinado, iria ler copia e gravar a informação que precisa, seguindo um layout de posicionamento
vou anexar um arquivo
Muito simples:
dim arquivo as string
dim linha as string
open [Ô]C:\pasta\arquivo.txt[Ô] For input as #1
while not eof(1)
line input linha #1
if mid(linha, 3,1) = [Ô]X[Ô] then [ô]3 e 1 se referem a posição do caracter que você quer monitorar t
[ô]faça algo
end if
arquivo = arquivo + linha
loop
Citação::
Muito simples:
dim arquivo as string
dim linha as string
open [Ô]C:pastaarquivo.txt[Ô] For input as #1
while not eof(1)
line input linha #1
if mid(linha, 3,1) = [Ô]X[Ô] then [ô]3 e 1 se referem a posição do caracter que você quer monitorar t
[ô]faça algo
end if
arquivo = arquivo + linha
loop
Citação::
Muito simples:
dim arquivo as string
dim linha as string
open [Ô]C:pastaarquivo.txt[Ô] For input as #1
while not eof(1)
line input linha #1
if mid(linha, 3,1) = [Ô]X[Ô] then [ô]3 e 1 se referem a posição do caracter que você quer monitorar t
[ô]faça algo
end if
arquivo = arquivo + linha
loop
OBRIGADO PELA RESPOSTA, TODAVIA GOSTARIA MUITO DE QUE, SE POSSIVEL FOSSE MAIS EXPLICITO, VEJAMOS:
VEJO QUE VOCE DECLARA AS VARIAVEIS, OK, DEPOIS COMANDA A ABERTURA DO ARQUIVO, A PARTIR DESSE MOMENTO PEÇO DESCULPAS POIS ESTOU INICIANDO AGORA COM VBA, QUAL A NECESSIDADE DE [Ô] For input as #1[Ô], O [Ô]while not eof(1)[Ô] NESSE CASO INICIA A CONDICIONAL ENQUANTO ETC..., E A NEGATIVAÇÃO ? [Ô]not eof(1)[Ô], ASSIM ABUSANDO DA SUA BOA VONTADE PODERIA ME EXPLICAR A CONDICIONAL IF E COMO ELA IRIA FAZER PARA PULAR PRA OUTRA LINHA E PRA PROXIMA E PRA PROXIMA ONDE SEMPRE IRIA TESTAR A EXISTENCIA DO REGISTRO
O MEU OBJETIVO é NA VERDADE TESTA O REGISTRO NO INICIO DA LINHA E A PARTIR DAI IRIA SOLICITAR A COPIA, PELO MID() DE DADOS QUE EXISTAM NA LINHA PARA DENTRO DE UMA BASE DE DADOS, ISSO OCORRE PORQUE CADA REGISTRO TEM NA SEQUENCIA DA LINHA EM POSICOES PRE DETERMINADAS DADOS QUE SERIA COPIADO PARA DENTRO DE UMA TABELA DO ACCESS - EXEMPLO tBL_REG60 - |NUMERO CUPOM | ETC ...
ISSO QUER DIZER QUE ENQUANTO O INICIO DAS LINHA FOR 60(ALGUMA COISA (M POR EXEMPLO), ELE DEVERA COPIAR OS DADOS PARA A TABELA E QUANDO MUDAR DE REGISTRO PRA OUTRA E ASSIM SUBSEQUENTEMENTE, NAO SEI SE FUI CLARO, MAS SE ABRIR O ARQUIVO VERA O QUE EU ESTOU DIZENDO
ATT
AGRADEÇO DE ANTE MAO
ISSO QUER DIZER QUE ENQUANTO O INICIO DAS LINHA FOR 60(ALGUMA COISA (M POR EXEMPLO), ELE DEVERA COPIAR OS DADOS PARA A TABELA E QUANDO MUDAR DE REGISTRO PRA OUTRA E ASSIM SUBSEQUENTEMENTE, NAO SEI SE FUI CLARO, MAS SE ABRIR O ARQUIVO VERA O QUE EU ESTOU DIZENDO
ATT
AGRADEÇO DE ANTE MAO
Vou comentar o código e veja se te ajuda:
Isso é o básico para ler arquivo e condicionar alguma ação conforme algum caractere em determinada posição em cada linha.
EDIT: Por favor evite escrever assim tudo em maiúsculo, fica horroroso.
dim arquivo as string [ô]variável que no final do processo conterá todo o conteúdo do arquivo
dim linha as string [ô]variável para ler cada linha
open [Ô]C:\pasta\arquivo.txt[Ô] For input as #1 [ô]abrindo o arquivo para leitura e dando a ele o [Ô]nome[Ô] de [Ô]#1[Ô]
while not eof(1) [ô]leia o arquivo [Ô]1[Ô] até o fim, EOF significa [Ô]End Of File[Ô] então, leia até o fim do arquivo
line input linha #1 [ô]Ler a linha atual do arquivo, isso vai acontecer com cada linha
if mid(linha, 3,1) = [Ô]X[Ô] then [ô]3 e 1 se referem a posição do caracter que você quer monitorar
[ô]faça algo caso o terceiro caractere seja [Ô]X[Ô] faça o que quiser
end if
arquivo = arquivo + linha [ô]adicionando o conteúdo da linha à variável que contém o arquivo
loop
Isso é o básico para ler arquivo e condicionar alguma ação conforme algum caractere em determinada posição em cada linha.
EDIT: Por favor evite escrever assim tudo em maiúsculo, fica horroroso.
Muito Obrigado pelo toque das maiúsculas - muito embora acredito que nao fique, todavia você é o alvo das minhas informações, irem fazer o possivel para seguir o seu conselho, outra quero lhe agradecer pela dica, acredito que tenha entendido a lógica, mas se nao for pedir muito, poderia complementar com o codigo que me permite copiar uma sequencia de caracteres para dentro de um BD do access, ou seja, depois que eu testar o inicio da linha irem usar novamente o função Mid(String, posicao_inicio, n), para copiar o que quero e colarem dentro do BD ja criado e é nessa parte que estou sem imaginar como fazer, agradeço por mais essa!!!
Bom, copiar para dentro de um BD do access, a coisa muda de figura. Apesar de não ser de nÃvel de dificuldade alto, acredito que você terá dificuldade. Conseguiu fazer pelo menos essa parte que você queria?
sim deu certo, eu entendi a logica quanto ao codigo, mas poderia me ajudar com essa outra situação?
Citação::
sim deu certo, eu entendi a logica quanto ao codigo, mas poderia me ajudar com essa outra situação?
Diga lá
como fazer para o codigo fazer a leitura do campo definido no arquivo e posteriormente colar a informação no BD do access
Você já tem alguma coisa, algum código, exemplo, algo já começado? Tem noção de trabalhar com Banco de Dados, criar tabela, fazer conexão, inserir registros, deletar, etc?
Faça seu login para responder