AJUDA VB6 E MATRIZES
Fala galera to com um probleminha e estou precisando de uma ajuda de vocês!
Situação:
O meu programa ele lê campos de uma planilha excel. Imaginem uma planilha assim:
nºEvent | Quantidade
29 1
31 1
42 1
4 2
29 1
11 1
31 1
31 1
32 1
50 3
11 1
11 1
11 4
11 1
terei 2 strings 1ª para ler nº Evento e 2ª Quantidade. Como podemos reparar temos tipos de eventos iguais, por exemplo o [Ô]11[Ô] , e cada evento temos uma quantidade, que no caso é uma quantidade de reclamacoes do tipo [Ô]11[Ô], por exemplo. Preciso que no final eu tenha a soma de todas as quantidades de reclamacõs de cada tipo entendem?
Vocês poderiam me ajudar nessa? Obrigado!!
Situação:
O meu programa ele lê campos de uma planilha excel. Imaginem uma planilha assim:
nºEvent | Quantidade
29 1
31 1
42 1
4 2
29 1
11 1
31 1
31 1
32 1
50 3
11 1
11 1
11 4
11 1
terei 2 strings 1ª para ler nº Evento e 2ª Quantidade. Como podemos reparar temos tipos de eventos iguais, por exemplo o [Ô]11[Ô] , e cada evento temos uma quantidade, que no caso é uma quantidade de reclamacoes do tipo [Ô]11[Ô], por exemplo. Preciso que no final eu tenha a soma de todas as quantidades de reclamacõs de cada tipo entendem?
Vocês poderiam me ajudar nessa? Obrigado!!
Desculpa cara, mas você poderia me explicar melhor como eu usar isto dentro do vb6 e consegui o que eu quero, pois não intendi direito o que ele fez ali, pois usou o excel e eu precisaria de usar o VB6.
Obrigado!
Obrigado!
num sei se entendi direito
mas vc pode declarar uma variavel
dim numerodoevento(0 to totaldeeventos) as double
e quando entrar o valor para aquele evento vc soma
numerodoevento(eventoatual) = numerodoevento(eventoatual) + valor
depois no final vc pode mostrar em um listbox
dim listano as double
for listano= 0 to totaldeeventos
listbox.additem [Ô]evento [Ô] & listano & [Ô] total [Ô] & numerodoevento(listano)
next
acho que a logica é essa mas ce vc postar parte de seu codigo a resposta pode ser mais especifica
mas vc pode declarar uma variavel
dim numerodoevento(0 to totaldeeventos) as double
e quando entrar o valor para aquele evento vc soma
numerodoevento(eventoatual) = numerodoevento(eventoatual) + valor
depois no final vc pode mostrar em um listbox
dim listano as double
for listano= 0 to totaldeeventos
listbox.additem [Ô]evento [Ô] & listano & [Ô] total [Ô] & numerodoevento(listano)
next
acho que a logica é essa mas ce vc postar parte de seu codigo a resposta pode ser mais especifica
Aew pessoal vou colar aqui a solução:
Public Sub ReadDetailedRejection()
On Error GoTo Trata_Erro
[ô]Declara as Variaveis
Dim x As Integer [ô]variavel do For
Dim t As Integer [ô]variavel do for
Dim specification As Integer [ô]variavel que recebe a quantidade de rejeitados
Dim numberCauseRejection As Integer [ô]variavel que recebe o numer da rejeicao
Dim eventType As String
[ô]Dimensiona a matriz
ReDim plusTotalRejection(sizeMatriz, 1)
endLine = ws.Cells(lineLengthFile, columnLengthFile).Text
[ô]Faz a leitura dos campos no Excel
For x = lineRejection To endLine Step 1
eventType = Trim(ws.Cells(x, eventTypeColumn).Value)
If (UCase$(eventType) = [Ô]D[Ô]) Then
numberCauseRejection = ws.Cells(x, numberColumn).Value
specification = ws.Cells(x, specificationColumn).Value
[ô]Chama a funcao VerificaMatriz
VerificaMatriz numberCauseRejection, specification
End If
Next x
For t = 0 To endLine Step 1
If (plusTotalRejection(t, 0) <> Empty) Then
WriteFileTeste [Ô]rejeicaoDetalhada[Ô], Empty, Empty, Empty, Empty, Empty, CStr(plusTotalRejection(t, 0)), CStr(plusTotalRejection(t, 1))
End If
Next t
Trata_Erro:
If Err.Number > 0 Then
WriteFileLog [Ô]Ocorreu um erro na Rejeicao Detalhada.[Ô], [Ô]ERROR[Ô], Err.Description
FormInicial.tb_FormInicial.Text = FormInicial.tb_FormInicial.Text & vbCrLf & [Ô]ERROR: [Ô] + [Ô]Informacao: Ocorreu um erro na Rejeicao Detalhada. [Ô] + [Ô]Mensagem: [Ô] + Err.Description
Resume Next
End If
End Sub
[ô]---------------------------------------------------------------------------------------
[ô] Procedimento....: LerExcel
[ô] DateTime........: 26/08/2010
[ô] Desenvolvido por: Gabriel
[ô] Descrição.......: Verifica se na matriz da rejeicao detalhada existe algum codigo repetido, se houver ela soma a quantidade deles
[ô]---------------------------------------------------------------------------------------
Public Function MatrizNotes(code As Integer, amount As Integer)
On Error GoTo Trata_Erro
Dim i As Integer
For i = 0 To endLineRejection Step 1
[ô]Se o codigo da matriz no atual indice for vazio seta a o codigo e a quantidade recebida nos campos
If (plusTotalRejection(i, 0) = Empty) Then
plusTotalRejection(i, 0) = code
plusTotalRejection(i, 1) = amount
Exit Function
[ô]Verifica se o codigo da matriz e igual ao codigo recebido
ElseIf (plusTotalRejection(i, 0) = code) Then
plusTotalRejection(i, 1) = plusTotalRejection(i, 1) + amount
Exit Function
End If
Next i
Trata_Erro:
If Err.Number > 0 Then
WriteFileLog [Ô]Ocorreu um erro no calculo da RejeicaoDetalhada[Ô], [Ô]ERROR[Ô], Err.Description
FormInicial.tb_FormInicial.Text = FormInicial.tb_FormInicial.Text & vbCrLf & [Ô]ERROR: [Ô] + [Ô]Informacao: Ocorreu um erro na leitura do turno atual. [Ô] + [Ô]Mensagem: [Ô] + Err.Description
Resume Next
End If
End Function
Public Sub ReadDetailedRejection()
On Error GoTo Trata_Erro
[ô]Declara as Variaveis
Dim x As Integer [ô]variavel do For
Dim t As Integer [ô]variavel do for
Dim specification As Integer [ô]variavel que recebe a quantidade de rejeitados
Dim numberCauseRejection As Integer [ô]variavel que recebe o numer da rejeicao
Dim eventType As String
[ô]Dimensiona a matriz
ReDim plusTotalRejection(sizeMatriz, 1)
endLine = ws.Cells(lineLengthFile, columnLengthFile).Text
[ô]Faz a leitura dos campos no Excel
For x = lineRejection To endLine Step 1
eventType = Trim(ws.Cells(x, eventTypeColumn).Value)
If (UCase$(eventType) = [Ô]D[Ô]) Then
numberCauseRejection = ws.Cells(x, numberColumn).Value
specification = ws.Cells(x, specificationColumn).Value
[ô]Chama a funcao VerificaMatriz
VerificaMatriz numberCauseRejection, specification
End If
Next x
For t = 0 To endLine Step 1
If (plusTotalRejection(t, 0) <> Empty) Then
WriteFileTeste [Ô]rejeicaoDetalhada[Ô], Empty, Empty, Empty, Empty, Empty, CStr(plusTotalRejection(t, 0)), CStr(plusTotalRejection(t, 1))
End If
Next t
Trata_Erro:
If Err.Number > 0 Then
WriteFileLog [Ô]Ocorreu um erro na Rejeicao Detalhada.[Ô], [Ô]ERROR[Ô], Err.Description
FormInicial.tb_FormInicial.Text = FormInicial.tb_FormInicial.Text & vbCrLf & [Ô]ERROR: [Ô] + [Ô]Informacao: Ocorreu um erro na Rejeicao Detalhada. [Ô] + [Ô]Mensagem: [Ô] + Err.Description
Resume Next
End If
End Sub
[ô]---------------------------------------------------------------------------------------
[ô] Procedimento....: LerExcel
[ô] DateTime........: 26/08/2010
[ô] Desenvolvido por: Gabriel
[ô] Descrição.......: Verifica se na matriz da rejeicao detalhada existe algum codigo repetido, se houver ela soma a quantidade deles
[ô]---------------------------------------------------------------------------------------
Public Function MatrizNotes(code As Integer, amount As Integer)
On Error GoTo Trata_Erro
Dim i As Integer
For i = 0 To endLineRejection Step 1
[ô]Se o codigo da matriz no atual indice for vazio seta a o codigo e a quantidade recebida nos campos
If (plusTotalRejection(i, 0) = Empty) Then
plusTotalRejection(i, 0) = code
plusTotalRejection(i, 1) = amount
Exit Function
[ô]Verifica se o codigo da matriz e igual ao codigo recebido
ElseIf (plusTotalRejection(i, 0) = code) Then
plusTotalRejection(i, 1) = plusTotalRejection(i, 1) + amount
Exit Function
End If
Next i
Trata_Erro:
If Err.Number > 0 Then
WriteFileLog [Ô]Ocorreu um erro no calculo da RejeicaoDetalhada[Ô], [Ô]ERROR[Ô], Err.Description
FormInicial.tb_FormInicial.Text = FormInicial.tb_FormInicial.Text & vbCrLf & [Ô]ERROR: [Ô] + [Ô]Informacao: Ocorreu um erro na leitura do turno atual. [Ô] + [Ô]Mensagem: [Ô] + Err.Description
Resume Next
End If
End Function
Tópico encerrado , respostas não são mais permitidas