MAIOR NUMERO EM UM FORMULARIO

KELVINCD 15/01/2013 01:17:35
#417368
Boas pessoal estou com um probleminha.
tenho em um form segue imagem pra melhor intendimento.

fiz um
SELECT FIRST 6 T.* FROM lotofacil T ORDER BY T.ID DESC

me retorno os ultimos 6 registros do banco logo apos fiz um

select count(*) AS total from temp_lotofacil t where (t.n1 = [Ô] & i & [Ô] or t.n2 = [Ô] & i & [Ô] or t.n3 = [Ô] & i & [Ô] or t.n4 = [Ô] & i & [Ô] or t.n5 = [Ô] & i & [Ô] or t.n6 = [Ô] & i & [Ô] or t.n7 = [Ô] & i & [Ô] or t.n8 = [Ô] & i & [Ô] or t.n9 = [Ô] & i & [Ô] or t.n10 = [Ô] & i & [Ô] or t.n11 = [Ô] & i & [Ô] or t.n12 = [Ô] & i & [Ô] or t.n13 = [Ô] & i & [Ô] or t.n14 = [Ô] & i & [Ô] or t.n15 = [Ô] & i & [Ô])[Ô]

que retornos a quantidade de vezes que cada numero saiu
agora gostaria de verificar os 25 números e dizer qual são os 20 números que mais saíram e quantas vezes.

exemplo
nº 5 = 6
nº 18 = 6
nº 20 = 6
nº 1 = 4
nº 2 = 4
nº 3 = 4
nº 8 = 4
nº 10 = 4
nº 13 = 4
nº 14 = 4
nº 17 = 4
nº 21 = 4
nº 22 = 4
nº 23 = 4
nº 24 = 4
nº 4 = 3
nº 12 = 3
nº 15 = 3
nº 19 = 3
nº 6 = 2
FILMAN 15/01/2013 02:39:36
#417369
Cara eu faria o seguinte já que vai monstar essa informação sempre com as 6 ultimas linhas no momento em que estiver montando o grid carrega uma matriz que faz o incremento!!

Um exemplo rapido!!

Dim strMSG As String
Dim i As Integer
Dim x As Integer
Dim matValores(1 To 2, 1 To 25) As Variant

[ô]Carrega a matriz com as dezenas de 1 até 25
For i = 1 To UBound(matValores, 2)
matValores(1, i) = i
matValores(2, i) = 0
Next

[ô]Quando você fizer o SELECT para capturar as 6 ultimas linhas você vai carregar a matriz junto com o seu carregar do GRID
While Not rstTemp.EOF
For i = 1 To rstTemp.fields.Count - 1
For x = 1 To UBound(matValores, 2)
If rstTemp.fields(i).Value = matValores(1, x) Then
matValores(2, x) = matValores(2, x) + 1
Exit For
End If
Next

[ô]Aqui você determina a coluna do grid

Seugrid.coluna(1) = rstTemp.fields(i).Value

[ô]E assim por diante
Next
rstTemp.MoveNext
Wend

Call reordenaMatriz(matValores)
vSQL = [Ô][Ô]
For i = 1 To 20
strMSG = strMSG & matValores(1, i) & vbTab & [Ô] = [Ô] & matValores(2, i) & vbCrLf
MsgBox strMSG
Next

Public Sub reordenaMatriz(ByRef matriz)
Dim a, b As Integer
Dim auxA, auxB As Variant

For a = 1 To UBound(matriz, 2)
For b = a + 1 To UBound(matriz, 2) - 1
If Int(matriz(2, a)) < Int(matriz(2, b)) Then
auxA = matriz(1, a)
auxB = matriz(2, a)
matriz(1, a) = matriz(1, b)
matriz(2, a) = matriz(2, b)

matriz(1, b) = auxA
matriz(2, b) = auxB
End If
Next
Next
End Sub



Espero ter ajudado

Tópico encerrado , respostas não são mais permitidas