1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| Private Sub cmd_matieres_calculerRM_Click()
' une fois que les moyennes par matières sont calculées (via cmd_matieres_CalculerMM_Click),
' on peut attribuer le rang par matière
Dim s1 As String, strSql As String
Dim db1 As DAO.Database, rs1 As DAO.Recordset, rs2 As DAO.Recordset
' déclarer une instance de l'application
Set db1 = CurrentDb
' boucle sur les matière de la classe avec devoirs dans cette période
s1 = "classe_id =" & Me.classe_num _
& " AND format(devoir_date,'yyyymmdd') >= '" & Format(Me.date_deb, "yyyymmdd") & "'" _
& " AND format(devoir_date,'yyyymmdd') <= '" & Format(Me.date_fin, "yyyymmdd") & "'"
strSql = "SELECT Matiere_id" _
& " FROM (SELECT Classe_id, Matiere_id, Devoir_id, Devoir_valide, Devoir_date" _
& " FROM T_devoir" _
& " WHERE Devoir_valide = True" _
& " AND " & s1 & ") GROUP BY Matiere_id"
Debug.Print strSql
Set rs1 = db1.OpenRecordset(strSql, dbOpenSnapshot)
If rs1.RecordCount = 0 Then
MsgBox "Il n'y a aucun devoir noté pour cette classe dans la période saisie", vbInformation
Exit Sub
End If
rs1.MoveLast
rs1.MoveFirst
' boucle sur les matière de la classe
While Not rs1.EOF
' Ouvrir un recordset sur la discipline
strSql = "SELECT * FROM T_temp_matiere_MM " _
& " WHERE Classe_id= " & Me.classe_num _
& " AND Matiere_id= " & rs1!matiere_id _
& " AND semestre ='" & Me.Sem_libelle & "'"
Set rs2 = db1.OpenRecordset(strSql)
If rs2.RecordCount = 0 Then GoTo NEXT_MATIERE
rs2.MoveLast
rs2.MoveFirst
' Boucle
While Not rs2.EOF
rs2.Edit
rs2!RM = DCount("*", "T_temp_matiere_MM", _
"Classe_id= " & Me.classe_num & " AND Matiere_id= " & rs1!matiere_id _
& " AND semestre ='" & Me.Sem_libelle & "' AND [MM]>" & Replace(rs2![MM], ",", ".")) + 1
rs2.Update
NEXT_MATIERE:
rs2.MoveNext
Wend
rs1.MoveNext
Wend
MsgBox "Traitement terminé"
Exit_0:
Set rs2 = Nothing
Set rs1 = Nothing
Set db1 = Nothing
End Sub |
Partager