USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Separar dados de string serializada em grupos...?
vilmarbr
Pontos: 2843
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 27/09/2005 10:04 hs         
Bom dia,
 
Através dos dados de exemplo abaixo, eu preciso separar dados de string serializada em grupos que contenham apenas o mesmo código
de corretora, e somar as qtdes. de cada corretora e adicionar a mesma linha de um Ms-FlexGrid.
 
Até agora só consegui mesmo agrupar nos trechos diferentes,
mas não consegui agrupar uma ocorrência do começo, com uma do meio e com uma do fim de uma mesma corretora a alterar apenas uma linha de incidência dentro de
um loop.
 
Veja a string resumida:
#ZT0011-1
#ZT0011-8
#ZT0011-1
#ZT0011-25
#AB0011-7
#AB0011-0
#ZT0011-3
#ZT0011-8
#HR0011-2
#HR0011-3
#ZT0011-2
#ZT0011-2
#ZT0011-3
 
Esta é a rotina que está incompleta:
            For intLoop = 1 To intTotal
                If intLoop >= (.Rows) Then
                    .AddItem Empty
                End If
               
                .Row = intLoop
               
                .RowHeight(intLoop) = lngRowHeight
               
                If .Row Mod 2 = 1 Then
                    lngCor = g_objTemplateLinhaImparCompra.strBackColor
                Else
                    lngCor = g_objTemplateLinhaParCompra.strBackColor
                End If
                If intLoop <= intTotCompra Then
                    If strCodCorretoraAtual <> vntCampos_C(intCont + pos_INST) Then
                        strCodCorretoraAtual = vntCampos_C(intCont + pos_INST)
                        strNomeCorretoraAtual = IIf(g_objTemplateMenu.blnCorretoraResumida, ExibirNomeCorretora(vntCampos_C(intCont + pos_INST)), vntCampos_C(intCont + pos_INST))
                        strContQtdAtual = vntCampos_C(intCont + pos_QTD)
                        strLinhaAtual = intLoop
                    Else
                        strContQtdAtual = strContQtdAtual + vntCampos_C(intCont + pos_QTD)
                    End If
                   
                    .TextMatrix(strLinhaAtual, INDICE_INSTC) = strNomeCorretoraAtual
                    .TextMatrix(strLinhaAtual, INDICE_QTDC) = strContQtdAtual
                    .TextMatrix(strLinhaAtual, INDICE_OFC) = "-"
                   
                    If mnuCorFundoOrdemCorretoraCompra.checked Then
                        If vntCampos_C(intCont + pos_INST) = m_myId Then
                           lngCor = g_objTemplateCorretoraCompra.strCor
                        End If
                    End If
                   
                    Select Case vntCampos_C(intCont + pos_STATUS)
                    Case 3
                        lngCor = RGB(232, 0, 116)
                    Case 2
                        lngCor = RGB(255, 193, 193)
                    End Select
                Else
                    .TextMatrix(intLoop, INDICE_INSTC) = Empty
                    .TextMatrix(intLoop, INDICE_QTDC) = Empty
                    .TextMatrix(intLoop, INDICE_OFC) = Empty
                End If
 
Obrigado!

http://www.vilmarbro.com.br
   
Martini
Pontos: 2843 Pontos: 2843
PAROBÉ
RS - BRASIL
ENUNCIADA !
Postada em 27/09/2005 14:32 hs         
Private Sub Command1_Click()
  Dim strABC As String
  Dim strCodCorretora As String
  Dim lngQtdeCorretora As Long
  Dim intLinhas As Integer
  intLinhas = 1
  Dim Matriz() As Variant
  ReDim Matriz(2, 1)
  Open "C:     emp     este.txt" For Input As #1
  Do While Not EOF(1)
    Line Input #1, strABC
    strCodCorretora = Mid(strABC, 2, 6)
    lngQtdeCorretora = CLng(Mid(strABC, InStr(1, strABC, "-") + 1))
    subInsereNaMatriz Matriz(), strCodCorretora, lngQtdeCorretora, intLinhas
  Loop
  Close #1
End Sub
Private Sub subInsereNaMatriz(ByRef Matriz() As Variant, strCodCorretora As String, lngQtdeCorretora As Long, ByRef intLinhas As Integer)
  Dim intI As Integer
  Dim blnEncontrou As Boolean
  For intI = 1 To intLinhas
    If Matriz(0, intI - 1) = strCodCorretora Then
      blnEncontrou = True
      Matriz(1, intI - 1) = Matriz(1, intI - 1) + lngQtdeCorretora
    End If
  Next
  If Not blnEncontrou Then
    If (Matriz(0, 0) = Empty) Or (IsNull(Matriz(0, 0))) Then
      Matriz(0, 0) = strCodCorretora
      Matriz(0, 1) = lngQtdeCorretora
    Else
      intLinhas = intLinhas + 1
      ReDim Preserve Matriz(2, intLinhas)
      Matriz(0, intLinhas - 1) = strCodCorretora
      Matriz(1, intLinhas - 1) = lngQtdeCorretora
    End If
  End If
End Sub
 
 
 
 
....
exemplo txt
 
#ZT0011-1
#ZT0011-8
#ZT0011-1
#ZT0011-25
#AB0011-7
#AB0011-0
#ZT0011-3
#ZT0011-8
#HR0011-2
#HR0011-3
#ZT0011-2
#ZT0011-2
#ZT0011-3
   
vilmarbr
Pontos: 2843
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 27/09/2005 16:26 hs         
Martini,
 
A rotina que vc passou apenas abre o arquivo texto e vê os arquivos na mesma ordem em que estão no arquivo.
 
O que eu preciso é mudar esta ordem p/ A >> Z, entendeu?
 
De qq forma, obrigadoEmoções

http://www.vilmarbro.com.br
   
Donkey
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
PRESIDENTE PRUDENTE
SP - BRASIL
ENUNCIADA !
Postada em 27/09/2005 17:12 hs            
Não da certo fazer:
grid.col = tal coluna
grid.sort = 3
 
Isso ordenaria a coluna.
 
OU ainda, abrir o arquivo texto, e ir gravando o conteudo numa tabela do seu banco de dados, terminou, vc faz um select indexado pela campo em questao (viria tudo agrupado, e ai sim vc jogar no grid).
 
T+
   
vilmarbr
Pontos: 2843
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 28/09/2005 10:11 hs         
Pessoal,
 
Eu trampo sem BD aqui, eu sei q é horrível, mas aki é assim: só STRING SERIALIZADA!
 
Se o Bubble Sort não der certo , vou tentar um Recordset desconectado.
 
Obrigado!Emoções

http://www.vilmarbro.com.br
   
caco
Pontos: 2843

SP - BRASIL
ENUNCIADA !
Postada em 28/09/2005 11:32 hs            
Fala vilmar, blz?
 
Lendo o tópico no início, de cara pensei num Recordset desconectado. Vai simplificar muito o trabalho, sem contar que é bem melhor do que fazer a manipulação das strings. Se houver qualquer alteração nos códigos você vai ter que refazer uma boa parte da rotina, sem contar que você ganha várias funcionalidades disponíveis em banco de dados.
 
Flw!

Messenger: vbdev@uol.com.br

   
Página(s): 1/2      PRÓXIMA »

CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página