CLASSIFICAR ARQUIVO TEXTO EM ORDEM CRESCENTE

USUARIO.EXCLUIDOS 03/01/2005 19:02:14
#58359
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
USUARIO.EXCLUIDOS 03/01/2005 19:06:27
#58362
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
VB6MASTER 03/01/2005 22:49:29
#58388
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)
LCSD 04/01/2005 05:10:43
#58416
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]

LCSD 04/01/2005 07:45:15
#58417
JefferSondo

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]

USUARIO.EXCLUIDOS 04/01/2005 10:30:20
#58437
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]
LCSD 04/01/2005 10:38:56
#58442
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]
USUARIO.EXCLUIDOS 04/01/2005 11:01:49
#58451
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
LCSD 04/01/2005 11:11:22
#58459
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]
LCSD 04/01/2005 11:15:15
#58461
Eu não respondi ONTEM e sim hoje de madrugada!
[s50]

USUARIO.EXCLUIDOS 04/01/2005 11:20:14
#58463
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...
Página 1 de 3 [30 registro(s)]
Tópico encerrado , respostas não são mais permitidas