Jump to content
Fórum Script Brasil
  • 0

Bloco txt e Uma unica linha(RESOLVIDO)


RobinhoVB

Question

Meus queridos estou precisando muito de ajuda com esse arquivo txt que recebi, segue a duvida (Verifiquem que tudo e o mesmo bloco) delimitado com ";" ponto e vigula

até tudo bem. So que o MAINFRAME (Grande porte) so ler a linha completa então como faço para que essa linha não tenha quebras e sim fiquem unica, claro continuando com o ";" ?

Obs: a primeira onde ta escrito "WALDIMIR DE SOUZA" não precisa ter o ";" e como está

Obs2: Eu falei que era um bloco apos a Ultima linha comeca novamente o nome do outro cadastrado e assim por diante

Esta assim

WALDIMIR DE SOUZA ;117502430302

;04/10/1982 ;MASCULINO ;24/01/2001 ;24/01/2001

;SOLTEIRO ;SEGUNDO GRAU INCOMPLETO

;931 - ESTUDANTE, BOLSISTA, ESTAGIÁRIO E ASSEMELHADOS

;RUA XINGU 17 CA1 AMBAI CEP: 26.050-480

;60011-RIO DE JANEIRO/RJ

;não CONSTA ;JORCELINA DE SOUZA

Gostaria que ficasse assim

WALDIMIR DE SOUZA ;117502430302;04/10/1982 ;MASCULINO ;24/01/2001 ;24/01/2001;SOLTEIRO ;SEGUNDO GRAU INCOMPLETO;931 - .................................................

Aqui tambem da quebra mas se gravar no aquivo TXT sem formatação fica unica

são 13850 linhas, ficar dando delete no final de cada para subir linha a linha HAJA DEDO NE !!! :) fico muito grato mesmo

Edited by RobinhoVB
Link to comment
Share on other sites

15 answers to this question

Recommended Posts

  • 0

RobinhoVB,

Estava analisando a sua dificuldade e surgiu uma dúvida... O bloco de informações sempre será composto por sete linhas?

Caso sim seria possível gerar um algoritmo para concatenar as sete linhas (de cada cliente) e ir gravando em outro arquivo. Se o tamanho do bloco for fixo (7) seria a condição para identificar o próximo registro.

Com isso ao final o novo arquivo teria o arquivo da forma que deseja.

Link to comment
Share on other sites

  • 0
RobinhoVB,

Estava analisando a sua dificuldade e surgiu uma dúvida... O bloco de informações sempre será composto por sete linhas?

Caso sim seria possível gerar um algoritmo para concatenar as sete linhas (de cada cliente) e ir gravando em outro arquivo. Se o tamanho do bloco for fixo (7) seria a condição para identificar o próximo registro.

Com isso ao final o novo arquivo teria o arquivo da forma que deseja.

Isso mesmo Clleiton todos tem blocos fixo de (7) ou seja cada 7 forma uma linha, so esse algoritimo e que me falta conhecimento algo que va ate o final da linha e press DELETE tipo um sendkey algo assim

por isso peço ajuda

ROBSON

Link to comment
Share on other sites

  • 0

Caro Robinho...

Seguindo a linha de raciocínio segundo suas informações elaborei a seguinte função:

Function FullText(ByVal caminho As String) As String
Dim FSO As Object
Dim sT As TextStream
Dim tempTexto As String

  Set FSO = CreateObject("Scripting.FileSystemObject")
  Set sT = FSO.OpenTextFile(caminho, ForReading, True)
  
    Do Until sT.AtEndOfStream
       tempTexto = tempTexto & sT.ReadLine
    Loop

 FullText = tempTexto

End Function
Para chamar a função (mostrando tudo em um TextBox):
txt2.Text = FullText("C:\Nada.txt")

Isso se dentro do ".txt" só contiver as informações que você mostrou...

se no ".txt" contiver diversas informações, posta aí uns 4 ou 5 blocos de informações para tentar corrigir o script :rolleyes:

Link to comment
Share on other sites

  • 0
Caro Robinho...

Seguindo a linha de raciocínio segundo suas informações elaborei a seguinte função:

Function FullText(ByVal caminho As String) As String
Dim FSO As Object
Dim sT As TextStream
Dim tempTexto As String

  Set FSO = CreateObject("Scripting.FileSystemObject")
  Set sT = FSO.OpenTextFile(caminho, ForReading, True)
  
    Do Until sT.AtEndOfStream
       tempTexto = tempTexto & sT.ReadLine
    Loop

 FullText = tempTexto

End Function
Para chamar a função (mostrando tudo em um TextBox):
txt2.Text = FullText("C:\Nada.txt")

Isso se dentro do ".txt" só contiver as informações que você mostrou...

se no ".txt" contiver diversas informações, posta aí uns 4 ou 5 blocos de informações para tentar corrigir o script :rolleyes:

Meu querido se o moderador permitir eu mando o arquivo txt dai você ver e testa sua função porque aqui não funcionou, quanto a sua afirmacao você tem razao tem mais coisas alem do bloco com 7 mas isso eu ia me virar com a FUNCAO MID,

Trocando em miudos :

1 - Esse banco de dados vem de UM mainframe do TRE de informacoes de eleitores da cidade de Nova Iguacu - RJ (e Legalmente ta !! fica tranquilo)

Ele tem Blocos de 7 ou de 6 que vai desde o NOME ate os pais do ELEITOR vou destrincar cada 1 deles ex: 1 por 1

********************************************************* ESSE EO BLOCO COM 7 ONDE FLAVIA MARINS DE SOUSA (NOME)

FLAVIA MARINS DE SOUSA ;116924600388 * 116924600388 (NTITULO)

;12/11/1982 ;FEMININO ;07/02/2001 ;07/02/2001 * 12/11/1982 (DATA NASC)

;CASADO ;PRIMEIRO GRAU INCOMPLETO * FEMININO (SEXO)

;931 - ESTUDANTE, BOLSISTA, ESTAGIÁRIO E ASSEMELHADOS * 07/02/2001 (DATA FILIACAO)

;RUA ARAPONGA 189 CA03 GRAMA CEP: 26.061-080 * CASADO (ESTADO CIVIL)

;58696-NOVA IGUAÇU/RJ * 931-ESTUDANTE,BOLSISTA (PROFISSÃO)

;JOAO DE SOUSA ;SANDRA DE ASSIS MARINS * RUA + CEP: 26.061-080 (ENDERECO)

********************************************************* 58696-NOVA IGUAÇU/RJ (CIDADE)

JOAO DE SOUSA (PAI)

SANDRA DE ASSIS MARINS (MAE)

como disse gostaria de ficar assim cada bloco

FLAVIA MARINS DE SOUSA ;116924600388;12/11/1982 ;FEMININO ;07/02/2001 ;07/02/2001;CASADO ;PRIMEIRO GRAU INCOMPLETO;931- ESTUDANTE....

você Vai ver que no arquivo de vez em quando tem uma informacao do tipo

Local : XXX Seção: XXX

Então essa linha vai baguncar tudo. mas eu já resolvi isso com a funcao MID para deletar essa linha

ou seja comeca com local já deleta (Ate porque não conheco ng nesse mundo que se chama LOCAL)

em outra situacao tb encontrei a palavra ALACAO (que o mesmo que acerca de) tb mandei o mid nele e deletei a linha

(Ate porque não conheco ng nesse mundo que se chama ALACAO)

claro isso no arquivo que estou testado esse que estou te mandando e o arquivo original com todas as sujeiras do MAINFRAME

inclusive andei observando que tem bloco de 6.

sem mais delongas eu precisaria tb do numero do local e da secao como + 2 campos no banco de dados

FLAVIA MARINS DE SOUSA (NOME)

116924600388 (NTITULO)

12/11/1982 (DATA NASC)

FEMININO (SEXO)

07/02/2001 (DATA FILIACAO)

CASADO (ESTADO CIVIL)

931-ESTUDANTE,BOLSISTA (PROFISSÃO)

RUA + CEP: 26.061-080 (ENDERECO)

58696-NOVA IGUAÇU/RJ (CIDADE)

JOAO DE SOUSA (PAI)

SANDRA DE ASSIS MARINS (MAE)

LOCAL (ZONA)

Seção (SECAO)

E ALARCAO PRO LIXO ISSO não E CAMPO DE NADA

qualquer duvida agente se fala no forum

muito obrigado eu to em parafusos

ROBSON

Link to comment
Share on other sites

  • 0
Isso mesmo Clleiton todos tem blocos fixo de (7) ou seja cada 7 forma uma linha, so esse algoritimo e que me falta conhecimento algo que va ate o final da linha e press DELETE tipo um sendkey algo assim

por isso peço ajuda

ROBSON

Confirmou que o tamanho para cada registro é 7 linhas – Vi acima que comentou que pode ser 6 confirma essa possibilidade?. Observando exemplo do arquivo que passou o separador seria “;” certo?

Agora faltam dois detalhes...

Um seria em relação ao termino do arquivo... Tem algum caractere que finaliza o arquivo ou somente uma linha em branco?

No arquivo constam os nomes dos campos em parênteses?

Edited by Cleiton Aparecido Crispim
Link to comment
Share on other sites

  • 0
Isso mesmo Clleiton todos tem blocos fixo de (7) ou seja cada 7 forma uma linha, so esse algoritimo e que me falta conhecimento algo que va ate o final da linha e press DELETE tipo um sendkey algo assim

por isso peço ajuda

ROBSON

Confirmou que o tamanho para cada registro é 7 linhas – Vi acima que comentou que pode ser 6 confirma essa possibilidade?. Observando exemplo do arquivo que passou o separador seria “;” certo?

Agora faltam dois detalhes...

Um seria em relação ao termino do arquivo... Tem algum caractere que finaliza o arquivo ou somente uma linha em branco?

No arquivo constam os nomes dos campos em parênteses?

Isso mesmo tem bloco de 6 ou de 7 so depois que eu vi

O termino do aquivo não tem caracteres uma linha em branco

Os aquivo não contem parenteses

ex: abaixo

WALDIMIR DE SOUZA ;117502430302

;04/10/1982 ;MASCULINO ;24/01/2001 ;24/01/2001

;SOLTEIRO ;SEGUNDO GRAU INCOMPLETO

;931 - ESTUDANTE, BOLSISTA, ESTAGIÁRIO E ASSEMELHADOS

;RUA XINGU 17 CA1 AMBAI CEP: 26.050-480

;60011-RIO DE JANEIRO/RJ

;não CONSTA ;JORCELINA DE SOUZA

FLAVIA MARINS DE SOUSA ;116924600388

;12/11/1982 ;FEMININO ;07/02/2001 ;07/02/2001

;CASADO ;PRIMEIRO GRAU INCOMPLETO

;931 - ESTUDANTE, BOLSISTA, ESTAGIÁRIO E ASSEMELHADOS

;RUA ARAPONGA 189 CA03 GRAMA CEP: 26.061-080

Isso mesmo Clleiton todos tem blocos fixo de (7) ou seja cada 7 forma uma linha, so esse algoritimo e que me falta conhecimento algo que va ate o final da linha e press DELETE tipo um sendkey algo assim

por isso peço ajuda

ROBSON

Confirmou que o tamanho para cada registro é 7 linhas – Vi acima que comentou que pode ser 6 confirma essa possibilidade?. Observando exemplo do arquivo que passou o separador seria “;” certo?

Agora faltam dois detalhes...

Um seria em relação ao termino do arquivo... Tem algum caractere que finaliza o arquivo ou somente uma linha em branco?

No arquivo constam os nomes dos campos em parênteses?

Isso mesmo tem bloco de 6 ou de 7 so depois que eu vi

O termino do aquivo não tem caracteres uma linha em branco

Os aquivo não contem parenteses

ex: abaixo

WALDIMIR DE SOUZA ;117502430302

;04/10/1982 ;MASCULINO ;24/01/2001 ;24/01/2001

;SOLTEIRO ;SEGUNDO GRAU INCOMPLETO

;931 - ESTUDANTE, BOLSISTA, ESTAGIÁRIO E ASSEMELHADOS

;RUA XINGU 17 CA1 AMBAI CEP: 26.050-480

;60011-RIO DE JANEIRO/RJ

;não CONSTA ;JORCELINA DE SOUZA

FLAVIA MARINS DE SOUSA ;116924600388

;12/11/1982 ;FEMININO ;07/02/2001 ;07/02/2001

;CASADO ;PRIMEIRO GRAU INCOMPLETO

;931 - ESTUDANTE, BOLSISTA, ESTAGIÁRIO E ASSEMELHADOS

;RUA ARAPONGA 189 CA03 GRAMA CEP: 26.061-080

;26578868 ;58696-NOVA IGUAÇU/RJ

;JOAO DE SOUSA ;SANDRA DE ASSIS MARINS

WALTER SODRE JUNIOR ;117493920396

;17/02/1984 ;MASCULINO ;24/01/2001 ;24/01/2001

;SOLTEIRO ;SEGUNDO GRAU INCOMPLETO

;931 - ESTUDANTE, BOLSISTA, ESTAGIÁRIO E ASSEMELHADOS

;RUA ALVARENGA PEIXOTO 65 CA1 AMBAI CEP: 26.040-200

;00000000;58696-NOVA IGUAÇU/RJ

;WALTER SODRE ;FATIMA MARIA DOS SANTOS SODRE

CARLOS ROQUE DE ALMEIDA SANTOS ;117495210329

;10/08/1961 ;MASCULINO ;30/01/2001 ;30/01/2001

;CASADO ;PRIMEIRO GRAU INCOMPLETO

;999 - OUTROS

;RUA DR SERGIO 30 FIGUEIRAS CEP: 26.000-000

;35157-FEIRA DE SANTANA/BA

;FERNANDO MIRANDA SANTOS ;IDALICE PEREIRA DE ALMEIDA

CAROLINA NOVAIS OLIVEIRA ;117502460345

;21/05/1983 ;FEMININO ;24/01/2001 ;24/01/2001

;SOLTEIRO ;SEGUNDO GRAU COMPLETO

;931 - ESTUDANTE, BOLSISTA, ESTAGIÁRIO E ASSEMELHADOS

;EST DA GRAMA 439 GRAMA CEP: 26.060-640

;00000000;58696-NOVA IGUAÇU/RJ

;EZEQUIEL NOVAIS OLIVEIRA ;DALVA DOS SANTOS FALCAO

não tem esses espacos entre um Bloco e Outro coloquei so pra ilustrar..

Mas 1 vez muito obrigado

Link to comment
Share on other sites

  • 0

O exemplo que você passou sempre quando um registro "novo" NÃO tem ";" no inicio da linha.

Poderiamos usar isso para idendificar o registro e assim não teriamos problema se for 7 ou 6 linhas.

Poderia confirmar se isso ocorre em todos os registros?

Link to comment
Share on other sites

  • 0

RobinhoVB,

Testa o código abaixo vê se ele atende a sua situação.

Private Sub Command_Click()

    Dim FSO As Object
    Dim sT As TextStream
    Dim arqFormatado As TextStream
    Dim LinhaTexto As String
    Dim tempTexto As String

    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set sT = FSO.OpenTextFile(App.Path & "\Teste.txt", ForReading, True)
    Set arqFormatado = FSO.CreateTextFile(App.Path & "\Arquivo.txt", True)
    
    Dim ContReg As Boolean
    Dim Cont As Integer
    
    Cont = 1
    Do Until sT.AtEndOfStream
        
        LinhaTexto = sT.ReadLine
        
        ContReg = InStr(1, LinhaTexto, ";") = 1
    
        
        If ContReg Or Cont = 1 Then
            tempTexto = tempTexto & LinhaTexto
        Else
            arqFormatado.WriteLine tempTexto
            
            tempTexto = Empty
            tempTexto = tempTexto & LinhaTexto
            Cont = 1
        End If
        
        Cont = Cont + 1
    Loop
    
    sT.Close
    Set sT = Nothing
    
    arqFormatado.Close
    Set arqFormatado = Nothing

    FullText = tempTexto
    
    
    MsgBox "OK"

End Sub

Link para download do projeto http://www.4shared.com/zip/dFW4K7tK/Exemplo.html.

Edited by Cleiton Aparecido Crispim
Link to comment
Share on other sites

  • 0
RobinhoVB,

Testa o código abaixo vê se ele atende a sua situação.

Private Sub Command_Click()

    Dim FSO As Object
    Dim sT As TextStream
    Dim arqFormatado As TextStream
    Dim LinhaTexto As String
    Dim tempTexto As String

    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set sT = FSO.OpenTextFile(App.Path & "\Teste.txt", ForReading, True)
    Set arqFormatado = FSO.CreateTextFile(App.Path & "\Arquivo.txt", True)
    
    Dim ContReg As Boolean
    Dim Cont As Integer
    
    Cont = 1
    Do Until sT.AtEndOfStream
        
        LinhaTexto = sT.ReadLine
        
        ContReg = InStr(1, LinhaTexto, ";") = 1
    
        
        If ContReg Or Cont = 1 Then
            tempTexto = tempTexto & LinhaTexto
        Else
            arqFormatado.WriteLine tempTexto
            
            tempTexto = Empty
            tempTexto = tempTexto & LinhaTexto
            Cont = 1
        End If
        
        Cont = Cont + 1
    Loop
    
    sT.Close
    Set sT = Nothing
    
    arqFormatado.Close
    Set arqFormatado = Nothing

    FullText = tempTexto
    
    
    MsgBox "OK"

End Sub

Link para download do projeto http://www.4shared.com/zip/dFW4K7tK/Exemplo.html.

Meu querido esta dando erro 91 "variavel não esta estabelecida" quando ele passa pelo DO UNTIL eu referenciei o microsoft script runtime, tem algo Mais ?

imagen neste link https://www.mar.mil.br/cpse/imagens/erro91.jpg

Link to comment
Share on other sites

  • 0
RobinhoVB,

Testa o código abaixo vê se ele atende a sua situação.

Private Sub Command_Click()

    Dim FSO As Object
    Dim sT As TextStream
    Dim arqFormatado As TextStream
    Dim LinhaTexto As String
    Dim tempTexto As String

    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set sT = FSO.OpenTextFile(App.Path & "\Teste.txt", ForReading, True)
    Set arqFormatado = FSO.CreateTextFile(App.Path & "\Arquivo.txt", True)
    
    Dim ContReg As Boolean
    Dim Cont As Integer
    
    Cont = 1
    Do Until sT.AtEndOfStream
        
        LinhaTexto = sT.ReadLine
        
        ContReg = InStr(1, LinhaTexto, ";") = 1
    
        
        If ContReg Or Cont = 1 Then
            tempTexto = tempTexto & LinhaTexto
        Else
            arqFormatado.WriteLine tempTexto
            
            tempTexto = Empty
            tempTexto = tempTexto & LinhaTexto
            Cont = 1
        End If
        
        Cont = Cont + 1
    Loop
    
    sT.Close
    Set sT = Nothing
    
    arqFormatado.Close
    Set arqFormatado = Nothing

    FullText = tempTexto
    
    
    MsgBox "OK"

End Sub

Link para download do projeto http://www.4shared.com/zip/dFW4K7tK/Exemplo.html.

Meu querido esta dando erro 91 "variavel não esta estabelecida" quando ele passa pelo DO UNTIL eu referenciei o microsoft script runtime, tem algo Mais ?

imagen neste link https://www.mar.mil.br/cpse/imagens/erro91.jpg

Meu querido 100 palavras ta funcionando direitinho eu achei onde estava o error na verdade era so Obeservar linha a linha ne :(

Voce escreveu aqui no Forum a rotina certa, mas no arquivo enviado estava errada tipo (O EXECUTAVEL COMPILADO TAVA CERTO OK)

Set arqFormatado = FSO.CreateTextFile(App.Path & "\Teste.txt", True)

Essa rotina cria um novo arquivo txt, dai arquivo vazio passava os parametros de false quando o certo seria

Set sT = FSO.OpenTextFile(App.Path & "\Teste.txt", ForReading, True)

Abrir o arquivo e ler, como você escreveu aqui, tudo bem, queimei pestana mais achei o erro pela logica (NÃO DE O PEIXE ENSINE A PESCAR)

Moderador por mim pode fechar o tópico RESOLVIDO

A todos o meu muito obrigado senhores, voces fizeram meus filhos muito feliz garantindo meu emprego. :rolleyes:

Link to comment
Share on other sites

  • 0
RobinhoVB

Da maneira que está não precisa referenciar o "microsoft script runtime", pois a função CreateObject "cria" o objeto...

se puder e quiser me envie o arquivo ".txt"

E-mail:

dannleonhart@hotmail.com

B)

Meu querido problema resolvido mas tambem agradeço muito a sua vasta colaboracao

Muito Obrigado

tópico pode ser encerrado refente ao e mail posso te add ?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652.1k
×
×
  • Create New...