CLASSIFICAR ARQUIVO TEXTO EM ORDEM CRESCENTE
JefferSondo
Não estou te chamando de Mané, que isto, longe de mim.
Só que peço para ser mais claro, poderia estar resolvido na 1Âê página as 8:00 da manhã!!!!!!!
[s55]
Não adianta abrir um tópico com 25% da descrição, porque chateia montar uma solução e depois avisar que postou incorretamente, no caso da linha, e desmonta a lógica e monta novamente, depois desmonta de novo eram outros campos....
Por favor, mais atenção e SEMPRE poste nestes casos, uma Massa de Dados, assim o problema é resolvido rápido.
Quanto ao HEADER, vai suar um pouco que os Detalhes e o Trailler já estão prontos!
[s92]
Não estou te chamando de Mané, que isto, longe de mim.
Só que peço para ser mais claro, poderia estar resolvido na 1Âê página as 8:00 da manhã!!!!!!!
[s55]
Não adianta abrir um tópico com 25% da descrição, porque chateia montar uma solução e depois avisar que postou incorretamente, no caso da linha, e desmonta a lógica e monta novamente, depois desmonta de novo eram outros campos....
Por favor, mais atenção e SEMPRE poste nestes casos, uma Massa de Dados, assim o problema é resolvido rápido.
Quanto ao HEADER, vai suar um pouco que os Detalhes e o Trailler já estão prontos!
[s92]
JefferSondo
Conseguiu montar o Header?
[s50]
Conseguiu montar o Header?
[s50]
Poxa Amigão, ainda não tive tempo, estou testando o retorno do que esta função vai me proporcionar....
depois que fizer o SORT, vou ter que analisar a soma dos lotes de itens iguais e verificar se tem divergencia ou não, caso não, tenho que acertar a qtde informada com a coletada, para que mais na frente no sistema não trate este item sem divergencia, pois a ideia do sistema é trartar os itens com divergencia...
é isso ainda nem mexi.. vou ver depois do almoço...
Fique tranquivo que passarei um resultado dando certo ou nao... acredito que vá funcionar...
[S67] [S95]
Abs,
Jefferson
depois que fizer o SORT, vou ter que analisar a soma dos lotes de itens iguais e verificar se tem divergencia ou não, caso não, tenho que acertar a qtde informada com a coletada, para que mais na frente no sistema não trate este item sem divergencia, pois a ideia do sistema é trartar os itens com divergencia...
é isso ainda nem mexi.. vou ver depois do almoço...
Fique tranquivo que passarei um resultado dando certo ou nao... acredito que vá funcionar...
[S67] [S95]
Abs,
Jefferson
[S90] [S91]
Cara estou fazendo o que vc me indicou, mas como eu declaro o MSHFlexGrid1??
Obrigado,
Cara estou fazendo o que vc me indicou, mas como eu declaro o MSHFlexGrid1??
Obrigado,
[S25]
Acho que isso esta complicado, porque!
Porque o arquivo é descarregado em uma pasta, onde ao clicar num botão executa tudo isso e o MSHFlexGrid1 é um componente, que ao executar deve carregar um form com um tipo de DBGrid, certo?
Em vez de mostrar neste MSHFlexGrid, não pode jogar direto no arquivo??
[S38]
Jefferson
Acho que isso esta complicado, porque!
Porque o arquivo é descarregado em uma pasta, onde ao clicar num botão executa tudo isso e o MSHFlexGrid1 é um componente, que ao executar deve carregar um form com um tipo de DBGrid, certo?
Em vez de mostrar neste MSHFlexGrid, não pode jogar direto no arquivo??
[S38]
Jefferson
JefferSondo
Insira um MSHFlexGrid no Formulário, antes referencie ele no
Components (ToolBar de Activex). Só isto
[s79]
Insira um MSHFlexGrid no Formulário, antes referencie ele no
Components (ToolBar de Activex). Só isto
[s79]
isso irá mostra-lo?
Vou fazer isso...
perae...
Vou fazer isso...
perae...
Cara fiz o que me pediu, esta aparecendo o FlexGrid no form, mas isso é tranquilo, caso queira que ele suma.. hehehe....
Mas está apresentando o seguinte erro: [txt-color=#0000ff]"object variable or with block variable not set".[/txt-color]
instalei o seguinte componente:
[txt-color=#ff0000]"Microsoft FlexGrid Control 6.0 (SP6)" com a seguinte OCX (MSHFLXGD.OCX)"[/txt-color]
O nome tb nao é o mesmo que falou na dica: MSHFlexGrid, está mostrando MSFlexGrid, sem o "H", hehehe... cara que para sinistra... vc fez desta meneira no seu projeto?
[S92] [S82]
Jefferson
Mas está apresentando o seguinte erro: [txt-color=#0000ff]"object variable or with block variable not set".[/txt-color]
instalei o seguinte componente:
[txt-color=#ff0000]"Microsoft FlexGrid Control 6.0 (SP6)" com a seguinte OCX (MSHFLXGD.OCX)"[/txt-color]
O nome tb nao é o mesmo que falou na dica: MSHFlexGrid, está mostrando MSFlexGrid, sem o "H", hehehe... cara que para sinistra... vc fez desta meneira no seu projeto?
[S92] [S82]
Jefferson
JefferSondo
Conseguiu montar o Header?
[s68]
Conseguiu montar o Header?
[s68]
Encerrando o Tópico!!
Cara muito obrigado, mesmo!![S93][S88][S98]
fiz apenas uma modificação.. veja:
[txt-color=#ff0000]existe = False
'--- para cada arquivo que está no diretório
For Each f1 In fc
'--- seto o ADODB
Set rsDesconectado = New ADODB.Recordset
'-- Pego o tamanho do nome do arquivo
t = Len(f1.Name)
'-- verifico se inicia com Crec
'-- verifico se a extensão é .txt
If Mid(f1.Name, 1, 4) = "crec" And Mid(f1.Name, t - 2, 3) = "txt" Then
arquivo = f1.Name
'--- mensagem de status do sistema
'Text1.Text = Text1.Text & "Aguarde, classificando dados da NF" & vbCrLf
lArq = FreeFile
'--- Abro o Arquivo principal
Open "C:\coletor\batc\" & arquivo For Input As #lArq
Xtxt = FreeFile
'--- Abro o arquivo temporario
Open "C:\coletor\batc emp.txt" For Append As #Xtxt
Do
'--- Ler uma linha do arquivo principal
Line Input #lArq, sLinha
'--- grava no temporário
Print #Xtxt, sLinha
Loop Until EOF(lArq)
Close #lArq
Close #Xtxt
'--- Deleto o original
fs.DeleteFile "C:\coletor\batc\" & arquivo, True
Sleep (1000)
'--- cria os campos
rsDesconectado.Fields.Append "EAN", adVarChar, 19
rsDesconectado.Fields.Append "Descricao", adVarChar, 35
rsDesconectado.Fields.Append "CodigoFornecedor", adVarChar, 6
rsDesconectado.Fields.Append "NumeroLote", adVarChar, 10
rsDesconectado.Fields.Append "Validade", adVarChar, 4
rsDesconectado.Fields.Append "QuantColetada", adVarChar, 6
rsDesconectado.Fields.Append "QuantInformada", adVarChar, 6
rsDesconectado.Fields.Append "CodigoDivergencia", adVarChar, 4
rsDesconectado.Fields.Append "QuantDivergencia", adVarChar, 6
rsDesconectado.ActiveConnection = Nothing
rsDesconectado.CursorLocation = adUseClient
'--- Abro o DB em memória
rsDesconectado.Open
lArq = FreeFile
'--- Abro o Arquivo principal renomeado para temp
'Open "C:\coletor\batc\" & arquivo For Input As #lArq
Open "C:\coletor\batc emp.txt" For Input As #lArq
Xtxt = FreeFile
'--- Abro o arquivo principal para salvar os dados já classificados
Open "C:\coletor\batc\" & arquivo For Append As #Xtxt
lCont = 1
lPos = 0
Do While Not EOF(lArq)
'--- Leitura das Linhas de Texto
Line Input #lArq, sLinha
If Left(sLinha, 1) = "0" Then
Print #Xtxt, sLinha
End If
'--- Monta os Registros
If lCont > 1 Then
If Left(sLinha, 1) = "2" Then
trailler = sLinha
Exit Do
End If
'For lPos = 0 To Len(sLinha) Step 68
rsDesconectado.AddNew
rsDesconectado("EAN").Value = Mid(sLinha, lPos + 1, 19)
rsDesconectado("Descricao").Value = Mid(sLinha, lPos + 20, 35)
rsDesconectado("CodigoFornecedor").Value = Mid(sLinha, lPos + 55, 6)
rsDesconectado("NumeroLote").Value = Mid(sLinha, lPos + 61, 10)
rsDesconectado("Validade").Value = Mid(sLinha, lPos + 71, 4)
rsDesconectado("QuantColetada").Value = Mid(sLinha, lPos + 75, 6)
rsDesconectado("QuantInformada").Value = Mid(sLinha, lPos + 81, 6)
rsDesconectado("CodigoDivergencia").Value = Mid(sLinha, lPos + 87, 4)
rsDesconectado("QuantDivergencia").Value = Mid(sLinha, lPos + 91, 6)
rsDesconectado.Update
'Next
End If
lCont = lCont + 1
Loop
Close #lArq
rsDesconectado.Sort = ("EAN ASC, Descricao ASC")
Sleep (1000)
'-- Percorrendo o BD
Do While Not rsDesconectado.EOF
Item = ""
Item = rsDesconectado.Fields("EAN") & _
rsDesconectado.Fields("Descricao") & _
rsDesconectado.Fields("CodigoFornecedor") & _
rsDesconectado.Fields("NumeroLote") & _
rsDesconectado.Fields("Validade") & _
rsDesconectado.Fields("QuantColetada") & _
rsDesconectado.Fields("QuantInformada") & _
rsDesconectado.Fields("CodigoDivergencia") & _
rsDesconectado.Fields("QuantDivergencia")
If Item <> "" Then
Print #Xtxt, Item
End If
rsDesconectado.MoveNext
Loop
'--- gravo o trailler
Print #Xtxt, trailler
'--- fecho o temporario
Close #Xtxt
rsDesconectado.Close
Set rsDesconectado = Nothing[/txt-color]
Bem ficamos assim...
Esou em faze de homologação do sistema...
Sem ajuda de vcÂÂÂ's nao teria conseguindo,
Valeu mesmo galera e até a próxima...
Jefferson
Cara muito obrigado, mesmo!![S93][S88][S98]
fiz apenas uma modificação.. veja:
[txt-color=#ff0000]existe = False
'--- para cada arquivo que está no diretório
For Each f1 In fc
'--- seto o ADODB
Set rsDesconectado = New ADODB.Recordset
'-- Pego o tamanho do nome do arquivo
t = Len(f1.Name)
'-- verifico se inicia com Crec
'-- verifico se a extensão é .txt
If Mid(f1.Name, 1, 4) = "crec" And Mid(f1.Name, t - 2, 3) = "txt" Then
arquivo = f1.Name
'--- mensagem de status do sistema
'Text1.Text = Text1.Text & "Aguarde, classificando dados da NF" & vbCrLf
lArq = FreeFile
'--- Abro o Arquivo principal
Open "C:\coletor\batc\" & arquivo For Input As #lArq
Xtxt = FreeFile
'--- Abro o arquivo temporario
Open "C:\coletor\batc emp.txt" For Append As #Xtxt
Do
'--- Ler uma linha do arquivo principal
Line Input #lArq, sLinha
'--- grava no temporário
Print #Xtxt, sLinha
Loop Until EOF(lArq)
Close #lArq
Close #Xtxt
'--- Deleto o original
fs.DeleteFile "C:\coletor\batc\" & arquivo, True
Sleep (1000)
'--- cria os campos
rsDesconectado.Fields.Append "EAN", adVarChar, 19
rsDesconectado.Fields.Append "Descricao", adVarChar, 35
rsDesconectado.Fields.Append "CodigoFornecedor", adVarChar, 6
rsDesconectado.Fields.Append "NumeroLote", adVarChar, 10
rsDesconectado.Fields.Append "Validade", adVarChar, 4
rsDesconectado.Fields.Append "QuantColetada", adVarChar, 6
rsDesconectado.Fields.Append "QuantInformada", adVarChar, 6
rsDesconectado.Fields.Append "CodigoDivergencia", adVarChar, 4
rsDesconectado.Fields.Append "QuantDivergencia", adVarChar, 6
rsDesconectado.ActiveConnection = Nothing
rsDesconectado.CursorLocation = adUseClient
'--- Abro o DB em memória
rsDesconectado.Open
lArq = FreeFile
'--- Abro o Arquivo principal renomeado para temp
'Open "C:\coletor\batc\" & arquivo For Input As #lArq
Open "C:\coletor\batc emp.txt" For Input As #lArq
Xtxt = FreeFile
'--- Abro o arquivo principal para salvar os dados já classificados
Open "C:\coletor\batc\" & arquivo For Append As #Xtxt
lCont = 1
lPos = 0
Do While Not EOF(lArq)
'--- Leitura das Linhas de Texto
Line Input #lArq, sLinha
If Left(sLinha, 1) = "0" Then
Print #Xtxt, sLinha
End If
'--- Monta os Registros
If lCont > 1 Then
If Left(sLinha, 1) = "2" Then
trailler = sLinha
Exit Do
End If
'For lPos = 0 To Len(sLinha) Step 68
rsDesconectado.AddNew
rsDesconectado("EAN").Value = Mid(sLinha, lPos + 1, 19)
rsDesconectado("Descricao").Value = Mid(sLinha, lPos + 20, 35)
rsDesconectado("CodigoFornecedor").Value = Mid(sLinha, lPos + 55, 6)
rsDesconectado("NumeroLote").Value = Mid(sLinha, lPos + 61, 10)
rsDesconectado("Validade").Value = Mid(sLinha, lPos + 71, 4)
rsDesconectado("QuantColetada").Value = Mid(sLinha, lPos + 75, 6)
rsDesconectado("QuantInformada").Value = Mid(sLinha, lPos + 81, 6)
rsDesconectado("CodigoDivergencia").Value = Mid(sLinha, lPos + 87, 4)
rsDesconectado("QuantDivergencia").Value = Mid(sLinha, lPos + 91, 6)
rsDesconectado.Update
'Next
End If
lCont = lCont + 1
Loop
Close #lArq
rsDesconectado.Sort = ("EAN ASC, Descricao ASC")
Sleep (1000)
'-- Percorrendo o BD
Do While Not rsDesconectado.EOF
Item = ""
Item = rsDesconectado.Fields("EAN") & _
rsDesconectado.Fields("Descricao") & _
rsDesconectado.Fields("CodigoFornecedor") & _
rsDesconectado.Fields("NumeroLote") & _
rsDesconectado.Fields("Validade") & _
rsDesconectado.Fields("QuantColetada") & _
rsDesconectado.Fields("QuantInformada") & _
rsDesconectado.Fields("CodigoDivergencia") & _
rsDesconectado.Fields("QuantDivergencia")
If Item <> "" Then
Print #Xtxt, Item
End If
rsDesconectado.MoveNext
Loop
'--- gravo o trailler
Print #Xtxt, trailler
'--- fecho o temporario
Close #Xtxt
rsDesconectado.Close
Set rsDesconectado = Nothing[/txt-color]
Bem ficamos assim...
Esou em faze de homologação do sistema...
Sem ajuda de vcÂÂÂ's nao teria conseguindo,
Valeu mesmo galera e até a próxima...
Jefferson
Tópico encerrado , respostas não são mais permitidas