vilmarbr
|
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
|
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
|
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, obrigado
http://www.vilmarbro.com.br
|
|
|
Donkey
|
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
|
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!
http://www.vilmarbro.com.br
|
|
|
caco
|
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
|
|
|
|