2012-06-18 2 views
0

Используя VB6.0, у меня есть школьная база данных, которая содержит поле «Английский», и у меня есть SQL, чтобы создать набор записей и устроили английский в порядке Desc. Моя проблема заключается в том, что я хочу ранжировать этих учеников, так что после галстука следующие ученики получают звание после подсчета галстука следующим образом:Как сортировать массивы

Eng: 45, 48, 67, 67, 67, 80, 80, 91.

английский Звания 91 - 1 80 - 2 80 - 2, 67 - 4, 67 - 4, 67 - 4, 48 - 7, 45 - 8,

+2

Нам это легче, если вы покажете нам код, который вы написали. Не все, заметьте, но часть, которая имеет значение. Покажите нам, как далеко вы прошли. Asante. – bugmagnet

ответ

2

Ваш вопрос не совсем ясен, но я думаю, вы хотите что-то подобное?

select Eng, rank() over (order by Eng desc) EnglishRank from somewhere 
0

Возможно, вы имели в виду что-то вроде строк следующего кода. Я использую только один способ получения данных из процедуры. Вы, вероятно, сделаете что-то другое.

Option Explicit 

Private Type RankedScores 
    Rank    As Long 
    Score    As Long 
End Type 

Private Sub RankValues(ByRef the_rs As ADODB.Recordset, ByRef out_auRankedScores() As RankedScores) 

    Dim nIndex         As Long 
    Dim nRank         As Long 
    Dim nScore         As Long 
    Dim nLastScore        As Long 

    nRank = 0 
    nIndex = 0 

    ' Resize the output buffer to its maximum size (won't work on some types of recordsets). 
    ReDim out_auRankedScores(1 To the_rs.RecordCount) 

    Do Until the_rs.EOF 

     nIndex = nIndex + 1 

     ' Pull score out of the recordset. If it is not the same as the last score, then increment the rank. 
     nScore = CLng(the_rs.Fields.Item("English")) 
     If nScore <> nLastScore Then 
      nRank = nIndex 
     End If 

     ' Write into output buffer. 
     With out_auRankedScores(nIndex) 
      .Rank = nRank 
      .Score = nScore 
     End With 

     ' Reset last score. 
     nLastScore = nScore 

     ' Next row. 
     the_rs.MoveNext 
    Loop 

End Sub 
Смежные вопросы