PRIMEIROS COLOCADOS
BOM DIA A TODOS, ALGUEM PODE ME AJUDAR EM UMA CLASSIFICAÇÃO DE ALUNOS COM PONTUAÇÃO DE NOTAS?
EXEMPLO
PONTO COLOCAÇÃO
7900 1º
7400 2º
7400 2º
7400 2º
7300 5º
7100 6º
7100 6º
7090 8º
E ASSIM CONTINUA, QUERIA FAZER EM CODIGO NO VB 6.0, ALGUEM PODE ME AJUDAR NISSO?
DESCULPE TINHA COLOCADO ERRADO
EXEMPLO
PONTO COLOCAÇÃO
7900 1º
7400 2º
7400 2º
7400 2º
7300 5º
7100 6º
7100 6º
7090 8º
E ASSIM CONTINUA, QUERIA FAZER EM CODIGO NO VB 6.0, ALGUEM PODE ME AJUDAR NISSO?
DESCULPE TINHA COLOCADO ERRADO
primeiro faz um select distinct dos pontos com order by Decrescente
o primeiro registro será o 1º lugar
depois faz um loop nessa tabela e alimentar a tabela original com as respectivas posições
se for SQL server
Select distinct ROW_NUMBER() as Posição, Pontos From Tabela Order by Pontos desc
Se for Access tem que fazer um loop,
o primeiro registro será o 1º lugar
depois faz um loop nessa tabela e alimentar a tabela original com as respectivas posições
se for SQL server
Select distinct ROW_NUMBER() as Posição, Pontos From Tabela Order by Pontos desc
Se for Access tem que fazer um loop,
DIONISIO,
Anexei um exemplo que montei baseado em outro que eu já tinha.
Não sei se é isto que você quer, mas...
Basicamente dentro de um form tem:
* Duas labels -
- lblCompetidoresDesordenadas;
- lblCompetidoresOrdenadas;
* Duas listboxs -
- lstCompetidoresDesordenados;
- lstCompetidoresOrdenados;
* Um botão:
- cmdOrdenar
Abaixo o código fonte:
[][ô]s,
Tunusat.
Anexei um exemplo que montei baseado em outro que eu já tinha.
Não sei se é isto que você quer, mas...
Basicamente dentro de um form tem:
* Duas labels -
- lblCompetidoresDesordenadas;
- lblCompetidoresOrdenadas;
* Duas listboxs -
- lstCompetidoresDesordenados;
- lstCompetidoresOrdenados;
* Um botão:
- cmdOrdenar
Abaixo o código fonte:
Option Explicit
Dim arrCompetidores() As Competidores
Dim x As Integer
Private Type Competidores
Ponto As Double
Colocacao As Byte
End Type
Private Sub cmdOrdenar_Click()
lstCompetidoresOrdenados.Clear
For x = 0 To UBound(arrCompetidores)
[ô]arrCompetidores(x).Colocacao
lstCompetidoresOrdenados.AddItem arrCompetidores(x).Colocacao & [Ô] - [Ô] & arrCompetidores(x).Ponto
Next
End Sub
Private Sub Form_Load()
Dim strCompetidores As String
Dim y As Integer
Dim bytConta As Byte
[ô] Ponto COLOCAÇÃO
[ô] 7900 1º
[ô] 7400 2º
[ô] 7400 2º
[ô] 7400 2º
[ô] 7300 3º
[ô] 7100 4º
[ô] 7100 4º
ReDim arrCompetidores(15)
arrCompetidores(0).Ponto = [Ô]7100[Ô]
arrCompetidores(1).Ponto = [Ô]7356[Ô]
arrCompetidores(2).Ponto = [Ô]7400[Ô]
arrCompetidores(3).Ponto = [Ô]7400[Ô]
arrCompetidores(4).Ponto = [Ô]7900[Ô]
arrCompetidores(5).Ponto = [Ô]7100[Ô]
arrCompetidores(6).Ponto = [Ô]7151[Ô]
arrCompetidores(7).Ponto = [Ô]7225[Ô]
arrCompetidores(8).Ponto = [Ô]7400[Ô]
arrCompetidores(9).Ponto = [Ô]7300[Ô]
arrCompetidores(10).Ponto = [Ô]7899[Ô]
arrCompetidores(11).Ponto = [Ô]7717[Ô]
arrCompetidores(12).Ponto = [Ô]7771[Ô]
arrCompetidores(13).Ponto = [Ô]7195[Ô]
arrCompetidores(14).Ponto = [Ô]7356[Ô]
arrCompetidores(15).Ponto = [Ô]7812[Ô]
[ô]Para experimentar, retire o comentário das duas linhas abaixo:
[ô]ReDim Preserve arrCompetidores(16)
[ô]arrCompetidores(16).Ponto = [Ô]7099[Ô]
[ô] -----------------------------------
lstCompetidoresDesordenados.Clear
For x = 0 To UBound(arrCompetidores)
lstCompetidoresDesordenados.AddItem arrCompetidores(x).Ponto
Next
[ô] -----------------------------------
For x = 0 To lstCompetidoresDesordenados.ListCount - 1
For y = 0 To lstCompetidoresDesordenados.ListCount - 1
If arrCompetidores(x).Ponto < arrCompetidores(y).Ponto Then
strCompetidores = arrCompetidores(y).Ponto
arrCompetidores(y).Ponto = arrCompetidores(x).Ponto
arrCompetidores(x).Ponto = strCompetidores
End If
Next
Next
For x = 0 To lstCompetidoresDesordenados.ListCount - 1
For y = 0 To lstCompetidoresDesordenados.ListCount - 1
If arrCompetidores(x).Ponto > arrCompetidores(y).Ponto Then
strCompetidores = arrCompetidores(y).Ponto
arrCompetidores(y).Ponto = arrCompetidores(x).Ponto
arrCompetidores(x).Ponto = strCompetidores
End If
Next
Next
[ô] -----------------------------------
[ô]Posicionar no Ranking...
bytConta = 1
For x = 0 To lstCompetidoresDesordenados.ListCount - 1
If x < UBound(arrCompetidores) Then
arrCompetidores(x).Colocacao = bytConta
If arrCompetidores(x).Ponto > arrCompetidores(x + 1).Ponto Then _
bytConta = bytConta + 1
ElseIf x = UBound(arrCompetidores) Then
arrCompetidores(x).Colocacao = bytConta
End If
Next
[ô] -----------------------------------
[ô] For x = 0 To lstCompetidoresDesordenados.ListCount - 1
[ô] Debug.Print arrCompetidores(x).Colocacao & [Ô] - [Ô] & arrCompetidores(x).Ponto
[ô] Next
End Sub
[][ô]s,
Tunusat.
Faça seu login para responder