Ir para conteúdo
Fórum Script Brasil
  • 0

Bloco txt e Uma unica linha(RESOLVIDO)


RobinhoVB

Pergunta

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

Editado por RobinhoVB
Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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?

Editado por Cleiton Aparecido Crispim
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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.

Editado por Cleiton Aparecido Crispim
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...