CLASSIFICAR ARQUIVO TEXTO EM ORDEM CRESCENTE
Olá amigos, olha eu aqiu novamente...
tenho o seguinte arquivo:
[txt-color=#ff0000]0LABORATORIO AMP 22017
17898089300011 AURIS-SEDINA 10 ML # 110003A1 17898089300035 PILULAS DE LUSSEN C/ 36 110094B1 17898089300011 AURIS-SEDINA 10 ML # 110003B1 17898089300011 AURIS-SEDINA 10 ML # 110003C1[/txt-color]
quero que fique assim, veja abaixo tipo classificar...
[txt-color=#0000ff]0LABORATORIO AMP 22017
17898089300011 AURIS-SEDINA 10 ML # 110003A1 17898089300011 AURIS-SEDINA 10 ML # 110003B1 17898089300011 AURIS-SEDINA 10 ML # 110003C1 17898089300035 PILULAS DE LUSSEN C/ 36 110094B1[/txt-color]
por ordem, pode ser que ao receber o arquivo jogue em um BD e crie um index...
gostaria miuto de saber se alguem tem alguma rotina para isso??
Aguardo com uma certa urgencia pela ajuda de vocês..

Jefferson
tenho o seguinte arquivo:
[txt-color=#ff0000]0LABORATORIO AMP 22017
17898089300011 AURIS-SEDINA 10 ML # 110003A1 17898089300035 PILULAS DE LUSSEN C/ 36 110094B1 17898089300011 AURIS-SEDINA 10 ML # 110003B1 17898089300011 AURIS-SEDINA 10 ML # 110003C1[/txt-color]
quero que fique assim, veja abaixo tipo classificar...
[txt-color=#0000ff]0LABORATORIO AMP 22017
17898089300011 AURIS-SEDINA 10 ML # 110003A1 17898089300011 AURIS-SEDINA 10 ML # 110003B1 17898089300011 AURIS-SEDINA 10 ML # 110003C1 17898089300035 PILULAS DE LUSSEN C/ 36 110094B1[/txt-color]
por ordem, pode ser que ao receber o arquivo jogue em um BD e crie um index...
gostaria miuto de saber se alguem tem alguma rotina para isso??
Aguardo com uma certa urgencia pela ajuda de vocês..

Jefferson
Desculpe, o formato do arquivo é assim:
0LABORATORIO AMP 22017
117898089300011 AURIS-SEDINA 10 ML # 110003A1
117898089300011 AURIS-SEDINA 10 ML # 110003A1
17898089300035 PILULAS DE LUSSEN C/ 36 110094B1
117898089300011 AURIS-SEDINA 10 ML # 110003A1
fica assim:
0LABORATORIO AMP 22017
117898089300011 AURIS-SEDINA 10 ML # 110003A1
117898089300011 AURIS-SEDINA 10 ML # 110003A1
117898089300011 AURIS-SEDINA 10 ML # 110003A1
17898089300035 PILULAS DE LUSSEN C/ 36 110094B1
espero que agora entendam
[]ÂÂÂ's
0LABORATORIO AMP 22017
117898089300011 AURIS-SEDINA 10 ML # 110003A1
117898089300011 AURIS-SEDINA 10 ML # 110003A1
17898089300035 PILULAS DE LUSSEN C/ 36 110094B1
117898089300011 AURIS-SEDINA 10 ML # 110003A1
fica assim:
0LABORATORIO AMP 22017
117898089300011 AURIS-SEDINA 10 ML # 110003A1
117898089300011 AURIS-SEDINA 10 ML # 110003A1
117898089300011 AURIS-SEDINA 10 ML # 110003A1
17898089300035 PILULAS DE LUSSEN C/ 36 110094B1
espero que agora entendam
[]ÂÂÂ's
Explique uma coisa, estes dados estão num arquivo .TXT ou num .MDB?
E o que são, ou melhor, para q servem as cerquilhas (#)?
Se estiverem num .TXT, vc quer aproveitá-lo como base de dados? (é possÃvel sim)
E o que são, ou melhor, para q servem as cerquilhas (#)?
Se estiverem num .TXT, vc quer aproveitá-lo como base de dados? (é possÃvel sim)
JefferSondo
Desculpe, mas você viajou na Batatinha!
[s41]
A Classificação, segundo os Dados originais não seria:
0LABORATORIO AMP 22017
17898089300011 AURIS-SEDINA 10 ML # 110003A1
[txt-color=#0000ff]17898089300011 AURIS-SEDINA 10 ML # 110003B1
17898089300011 AURIS-SEDINA 10 ML # 110003C1 [/txt-color]
17898089300035 PILULAS DE LUSSEN C/ 36 110094B1
Se vor este o caso, está vindo de um TXT?
[s92]
Desculpe, mas você viajou na Batatinha!
[s41]
A Classificação, segundo os Dados originais não seria:
0LABORATORIO AMP 22017
17898089300011 AURIS-SEDINA 10 ML # 110003A1
[txt-color=#0000ff]17898089300011 AURIS-SEDINA 10 ML # 110003B1
17898089300011 AURIS-SEDINA 10 ML # 110003C1 [/txt-color]
17898089300035 PILULAS DE LUSSEN C/ 36 110094B1
Se vor este o caso, está vindo de um TXT?
[s92]
JefferSondo
Com os dados que você passou, tem uma solução.
Eu estou levando em consideração que os dados estão em uma ÃÅ¡NICA LINHA, como você parece ter passado. Tem ainda que tratar a linha 1 para ser o cabeçalho.
Coloque em um Projeto um MSHFlexGrid, um CommandButton e Copie os dados que você colocou acima em um Arquivo TXT chamado Laboratorio.TXT.
Até Breve
[s92]
Com os dados que você passou, tem uma solução.
Private Sub Importa()
Dim i As Integer, sCaminho As String, sTemp As String
Dim lArq As Long, sLinha As String, lCont As Long, lPos As Long
Dim rsDesconectado As ADODB.Recordset
Set rsDesconectado = New ADODB.Recordset
rsDesconectado.Fields.Append "Codigo", adBigInt
rsDesconectado.Fields.Append "Remedio", adVarChar, 40
rsDesconectado.Fields.Append "Referencia", adVarChar, 20
rsDesconectado.ActiveConnection = Nothing
rsDesconectado.CursorLocation = adUseClient
rsDesconectado.Open
sCaminho = App.Path & "\Banco Dados\Laboratorio.txt"
lArq = FreeFile
'Abertura do Arquivo
Open sCaminho For Input As lArq
lCont = 1
lPos = 0
Do While Not EOF(lArq)
'Leitura das Linhas de Texto
Line Input #lArq, sLinha
'Monta os Registros
If lCont > 1 Then
For lPos = 0 To Len(sLinha) Step 68
rsDesconectado.AddNew
rsDesconectado("Codigo").Value = CSng(Mid(sLinha, lPos + 1, 19))
rsDesconectado("Remedio").Value = Mid(sLinha, lPos + 19, 26)
rsDesconectado("Referencia").Value = Mid(sLinha, lPos + 47, 20)
rsDesconectado.Update
Next
End If
lCont = lCont + 1
Loop
Close #lArq
rsDesconectado.Sort = ("Remedio desc, Referencia desc")
Set MSHFlexGrid1.DataSource = rsDesconectado
rsDesconectado.Close
Set rsDesconectado = Nothing
MSHFlexGrid1.ColWidth(0) = 200
MSHFlexGrid1.ColWidth(1) = 1500
MSHFlexGrid1.ColWidth(2) = 3500
MSHFlexGrid1.ColWidth(3) = 1500
MsgBox "Importado e Classificado "
End Sub
Eu estou levando em consideração que os dados estão em uma ÃÅ¡NICA LINHA, como você parece ter passado. Tem ainda que tratar a linha 1 para ser o cabeçalho.
Coloque em um Projeto um MSHFlexGrid, um CommandButton e Copie os dados que você colocou acima em um Arquivo TXT chamado Laboratorio.TXT.
Até Breve
[s92]
Ops... posso até viajado sim na batatinha, mas queria tentar passar o meu problema. Penso que se passar para um BD, ficaria mais fácil fazer a "classificação por orden de codigo", primieiro dado (17898089300011) do registro depois do cabeçalho (0LABORATORIO AMP 22017 ).
KPELLARJR, esta sua função esta pegando de uma arquivo TXT em que os dados estão em uma única linha?? Se for, desculpe, mas é linha a linha...
0LABORATORIO AMP 22017
17898089300011 AURIS-SEDINA 10 ML # 110003A1
17898089300011 AURIS-SEDINA 10 ML # 110003B1
17898089300011 AURIS-SEDINA 10 ML # 110003C1
17898089300035 PILULAS DE LUSSEN C/ 36 110094B1
O arquivo vem bagunçado, apenas quero organiza-lo e depois fazer um soma destes iguais...
KPELLAR o que tenho que fazer em sua função que pegue linha a linha do arquivo Texto?
Aguardo sua resposta.
Muito obrigado pelo o retorno, só não respondi ontem, pois acesso o VBMANIA aqui no trabalho...
[S61]
KPELLARJR, esta sua função esta pegando de uma arquivo TXT em que os dados estão em uma única linha?? Se for, desculpe, mas é linha a linha...
0LABORATORIO AMP 22017
17898089300011 AURIS-SEDINA 10 ML # 110003A1
17898089300011 AURIS-SEDINA 10 ML # 110003B1
17898089300011 AURIS-SEDINA 10 ML # 110003C1
17898089300035 PILULAS DE LUSSEN C/ 36 110094B1
O arquivo vem bagunçado, apenas quero organiza-lo e depois fazer um soma destes iguais...
KPELLAR o que tenho que fazer em sua função que pegue linha a linha do arquivo Texto?
Aguardo sua resposta.
Muito obrigado pelo o retorno, só não respondi ontem, pois acesso o VBMANIA aqui no trabalho...
[S61]
JefferSoundo
Pois é, mas como tu esqueceu de avisar, o KPêra aqui teve que modificar a rotina de leitura e implementar um For...Next calculando aproximadamente, já que vi que não estava muito Normalizado e acabou rodando. Dúvidas:
1) Por que o "#" não aparece no 4º Registro?
2) Tem o tamanho exato dos Registros e dos campos?
3) Quantos Registros por cada Arquivo? (provavelmente é variável, mas gostaria de ter certeza)
4) A Primeira linha SEMPRE contém o Laboratório? (é sempre o Cabeçalho?)
[txt-color=#0000ff] ** Em tempo, o "Viajou na BAtatinha" é que ficou difÃcil de entender, primeiro tu enviou errado, depois acertaste o formato mas a Classificação final estava repetida e ainda sumiu o "#"!!!!![/txt-color]
[s55]
Pois é, mas como tu esqueceu de avisar, o KPêra aqui teve que modificar a rotina de leitura e implementar um For...Next calculando aproximadamente, já que vi que não estava muito Normalizado e acabou rodando. Dúvidas:
1) Por que o "#" não aparece no 4º Registro?
2) Tem o tamanho exato dos Registros e dos campos?
3) Quantos Registros por cada Arquivo? (provavelmente é variável, mas gostaria de ter certeza)
4) A Primeira linha SEMPRE contém o Laboratório? (é sempre o Cabeçalho?)
[txt-color=#0000ff] ** Em tempo, o "Viajou na BAtatinha" é que ficou difÃcil de entender, primeiro tu enviou errado, depois acertaste o formato mas a Classificação final estava repetida e ainda sumiu o "#"!!!!![/txt-color]
[s55]
Foi mau!!! Digo foi péssimo...

Respondendo suas perguntas...
1) Por que o "#" não aparece no 4º Registro?
Porque coloquei apenas um pedaço do registro...
O arquivo texto é composto por um Header (identificado por "0" no inicio) com um tamanho de 105 caracteres, sendo que tenho o tamanho de cada item que compõe este Header, abaixo outro registro vem a linha de Detalhe (identificado por "1" no inicio) com tamanho de 96 caracteres, tambem tem os tamanhos fixos de cada item que compõe esta linha de Detalhe e por ultimo tem uma outra linha de registro Trailler (identificado por "2" no inicio) com um tamanho de 7 caracteres.
2)Tem o tamanho exato dos Registros e dos campos?
Sim tenho..
Quantos Registros por cada Arquivo? (provavelmente é variável, mas gostaria de ter certeza)
Sim é variavel, mas sempre neste formato...
Header
Detalhe
Detalhe
Detalhe
Trailler (a soma de linhas de Detalhes)
4) A Primeira linha SEMPRE contém o Laboratório? (é sempre o Cabeçalho?)
Sim, vem sempre um laboratorio, e tb é um cabeçalho sempre, este laboratório tem tamnho fixo sempre, 35 caracteres
é possivel que te mande o arquivo para vc ter uma maior visualização??
Espero ter esclarecido mais...
[S91]
Jefferson


Respondendo suas perguntas...
1) Por que o "#" não aparece no 4º Registro?
Porque coloquei apenas um pedaço do registro...
O arquivo texto é composto por um Header (identificado por "0" no inicio) com um tamanho de 105 caracteres, sendo que tenho o tamanho de cada item que compõe este Header, abaixo outro registro vem a linha de Detalhe (identificado por "1" no inicio) com tamanho de 96 caracteres, tambem tem os tamanhos fixos de cada item que compõe esta linha de Detalhe e por ultimo tem uma outra linha de registro Trailler (identificado por "2" no inicio) com um tamanho de 7 caracteres.
2)Tem o tamanho exato dos Registros e dos campos?
Sim tenho..
Quantos Registros por cada Arquivo? (provavelmente é variável, mas gostaria de ter certeza)
Sim é variavel, mas sempre neste formato...
Header
Detalhe
Detalhe
Detalhe
Trailler (a soma de linhas de Detalhes)
4) A Primeira linha SEMPRE contém o Laboratório? (é sempre o Cabeçalho?)
Sim, vem sempre um laboratorio, e tb é um cabeçalho sempre, este laboratório tem tamnho fixo sempre, 35 caracteres
é possivel que te mande o arquivo para vc ter uma maior visualização??
Espero ter esclarecido mais...
[S91]
Jefferson
Esclareceu, só esqueceu de informar o tamanho de cada campo do DETALHE
[s55]
Aguarando........
[txt-color=#0000ff]** Se possÃvel poste um exemplo com Cabecalho, 10 a 20 Detalhes e o Final! [/txt-color]
[s92]
[s55]
Aguarando........
[txt-color=#0000ff]** Se possÃvel poste um exemplo com Cabecalho, 10 a 20 Detalhes e o Final! [/txt-color]
[s92]
Eu não respondi ONTEM e sim hoje de madrugada!
[s50]
[s50]
Caraca!!![S20][S20] que mané...
Detalhes é composto assim:
Tipo = 01
[txt-color=#ff0000]Ean = 18[/txt-color]Descrição = 35
Codigo do Fornecedor = 06
Numero do Lote = 10
Validade = 04
Qt coletada = 06
Qt informada = 06
Codigo de Divergencia = 04
Qt de Divergencia = 06
precisa dos detalhes de cada campo do Header e Trailler?
volto a lembrar que tenho que classificar pelo o código do EAN em vermelho...
Cara muito obrigado em me ajudar, nem sei como retribuir... este sistema que estou fazendo tem muitas ramificações e qdo conclui-lo pretendo compartilhar com os amigos do VBMANIA...
Espero nao ter esqucido nada...
Detalhes é composto assim:
Tipo = 01
[txt-color=#ff0000]Ean = 18[/txt-color]Descrição = 35
Codigo do Fornecedor = 06
Numero do Lote = 10
Validade = 04
Qt coletada = 06
Qt informada = 06
Codigo de Divergencia = 04
Qt de Divergencia = 06
precisa dos detalhes de cada campo do Header e Trailler?
volto a lembrar que tenho que classificar pelo o código do EAN em vermelho...
Cara muito obrigado em me ajudar, nem sei como retribuir... este sistema que estou fazendo tem muitas ramificações e qdo conclui-lo pretendo compartilhar com os amigos do VBMANIA...
Espero nao ter esqucido nada...
Tópico encerrado , respostas não são mais permitidas