Bonjour membres du forum !
Voici un autre état sur les notes scolaires de ma BD.
Sur l'état "LISTE_DES_COMPOSANTS_NOTES_EVALUATIONS_FR" , j'ai placé des zones de texte "de m1 à m17" à la partie entête de page
et des zones de texte "de n1 à n17" à la partie détail.
Voici les codes qui chargent les noms de matières dans les zones de texte "de m1 à m17" de la partie entête de page:
- Variables déclarées:
-Procédure:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Option Compare Database Option Explicit Dim RstMatiere As Recordset 'Stocke le curseur Dim NbM As Integer Dim boolEstVide As Boolean
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Sub RemplirMatiere(Tableau As Variant) On Error Resume Next Dim i As Integer Dim j As Integer 'Récupère le nombre d'enregistrements Lus NbM = UBound(Tableau, 2) + 1 'affecte les valeurs aux zones de texte et labels For i = 0 To NbM - 1 Controls("m" & i + 1).Visible = True Controls("n" & i + 1).Visible = True Controls("m" & i + 1) = LibMatiereFr(CLng(Tableau(2, i))) ' '__________________________________________________ Controls("n" & i + 1) = LibNotesFr(Me.IdEcole, _ Me.Txt_IdCompoFr, _ Me.COMPOSITION, Me.AnneeScol, _ Me.MleEleve, CLng(Tableau(2, i))) '___________________________________________________ Next i 'Masque les autres zones de textes et labels 'NbM = NbM + 1 For j = NbM + 1 To 22 Controls("m" & j).Visible = False Controls("n" & j).Visible = False '***Controls("idM" & j).Visible = False Controls("m" & j) = "" Next j End SubEnsuite, j'ai écrit une fonction qui devrait ramener les notes des élèves selon leurs cases respectives:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Private Sub RaffraichirMatieres() On Error Resume Next Dim db As Database Dim strSql As String Set db = CurrentDb 'NumCompoMCFr strSql = "select * from MATIERE_CLASSE_FR_Req where annee_scol = '" & Me.AnneeScol & "' and classe_francais = '" & Me.NiveauCompositionFrancais & "' and NumCompoMCFr = " & Me.TxtCompositionFR & "and Identif_EtablisFR = " & Me.IdEcole & " order by CategorieMatiereFr asc;" Set RstMatiere = db.OpenRecordset(strSql) If RstMatiere.EOF Then boolEstVide = True Else boolEstVide = False NbMat = RstMatiere.RecordCount End If End Sub
que j'ai introduite dans la procédure "RemplirMatiere" après la ligne 13.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 'Ramener les notes de compositions françaises ' Public Function LibNotesFr(idecol As Long, idCompoFX As Long, CompoFran As Long, anscolN As String, mlelev As Long, idMatier As Integer) As Double On Error GoTo OUMAR If IsNull(idecol) Then Exit Function If IsNull(idCompoFX) Then Exit Function If IsNull(CompoFran) Then Exit Function If IsNull(anscolN) Then Exit Function If IsNull(mlelev) Then Exit Function If IsNull(idMatier) Then Exit Function Dim bd As Database Dim R As Recordset Dim sql As String Set bd = CurrentDb sql = "select * from Req_INFOS_COMPOSITION_FRANCAIS_NOTES_CLASSES_FRANCAIS where ID_Etab = " & idecol & _ " and idCompoF = " & idCompoFX & _ " and CompoFRANCAIS = " & CompoFran & _ " and anscol ='" & anscolN & " 'and mle_Eleve = " & mlelev & " and matiereFr= " & idMatier & ";" Set R = bd.OpenRecordset(sql) With R If Not .EOF Then LibNotesFr = .Fields("NoteFr") Else LibNotesFr = 0 End If End With Exit Function OUMAR: MsgBox "Erreur n° " & err.Number & vbCrLf & err.Description, vbCritical + vbOKOnly, "Une erreur est survenue" End Function
Voici comment:
Elle permet d'afficher les notes du 1er élève affiché sur l'état "LISTE_DES_COMPOSANTS_NOTES_EVALUATIONS_FR", ces mêmes notes se répètent chez tous les élèves.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ' '__________________________________________________ Controls("n" & i + 1) = LibNotesFr(Me.IdEcole, _ Me.Txt_IdCompoFr, _ Me.COMPOSITION, Me.AnneeScol, _ Me.MleEleve, CLng(Tableau(2, i))) '___________________________________________________
Aidez moi à y remédier.
Voici la source de l'état:
Cordialement.
Partager