IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

Sub supplémentaire pour correspondre les notes aux matières dans un état [AC-2013]


Sujet :

IHM

  1. #1
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 129
    Points : 495
    Points
    495
    Par défaut Sub supplémentaire pour correspondre les notes aux matières dans un état
    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:

    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
    -Procédure:

    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 Sub
    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
    Ensuite, 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
    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
    que j'ai introduite dans la procédure "RemplirMatiere" après la ligne 13.
    Voici comment:
    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)))
       '___________________________________________________
    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.
    Aidez moi à y remédier.
    Nom : EtatTemporaire_6.PNG
Affichages : 293
Taille : 26,3 Ko
    Voici la source de l'état:
    Nom : EtatTemporaire_7.PNG
Affichages : 221
Taille : 101,3 Ko

    Cordialement.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Bonjour.

    Si c'est un état alors je pense qu'il faut que tu appelles tes procédures d'assignation (ou ta procédure, je n'ai pas bien compris) dans les événements Sur Formatage et Sur Impression de la section détail.

    Note que je trouve ta méthode complexe et que personnellement j'aurai fait un requête croisée dynamique pour avoir les notes par matière et élèves et je m'en serait servi comme source du rapport.
    Quitte à assigner la source des champs dynamiquement au moment de l'ouverture du rapport. Ça dépend un peu si ta liste de matières est très variable ou pas.
    Ça ferait sans doute moins de travail.

    A+

  3. #3
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 129
    Points : 495
    Points
    495
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Bonjour.
    Note que je trouve ta méthode complexe et que personnellement j'aurai fait une requête croisée dynamique pour avoir les notes par matière et élèves et je m'en serait servi comme source du rapport.
    Quitte à assigner la source des champs dynamiquement au moment de l'ouverture du rapport. Ça dépend un peu si ta liste de matières est très variable ou pas.
    Ça ferait sans doute moins de travail.
    A+
    Bonsoir marot_r !
    Oui effectivement cette requête croisée dynamique existe "RESULTATS_LISTE_NOTES_FR" dans mon application.
    Mais voici le massage d'erreur qu'elle provoque quand je le place dans ma fonction:
    (voir capture d'écran.

    Par contre avec la requête simple "Req_INFOS_COMPOSITION_FRANCAIS_NOTES_CLASSES_FRANCAIS " la fonction
    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
    marche mais avec les erreurs que j'ai notées dans mon post#1:
    Elle permet d'afficher les notes du 1er élève affiché sur l'état "LISTE_DES_COMPOSANTS_NOTES_EVALUATIONS_FR", malheureusement les mêmes notes de ce premier élève se répètent chez tous les autres élèves.
    Aidez moi à y remédier.
    Malheureusement les mêmes notes de ce premier élève se répètent chez tous les autres élèves.
    Ça dépend un peu si ta liste de matières est très variable ou pas.
    Bien sûre, la liste de matières est très variable.

    Nom : EtatTemporaire_13.PNG
Affichages : 193
Taille : 51,5 Ko

    Nom : EtatTemporaire_6.PNG
Affichages : 187
Taille : 26,3 Ko

    Nom : EtatTemporaire_14.PNG
Affichages : 162
Taille : 26,7 Ko

    Nom : EtatTemporaire_15.PNG
Affichages : 227
Taille : 26,4 Ko

    Aidez moi à y remédier.

    Pièce jointe de mon application;

    Cordialement.
    Images attachées Images attachées   
    Fichiers attachés Fichiers attachés

  4. #4
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 129
    Points : 495
    Points
    495
    Par défaut
    Bonsoir membres du forum !

    J'ai trouvé à mon avis la solution en plaçant la procédure sur l’événement au formatage du détail de l'état "LISTE_DES_COMPOSANTS_NOTES_EVALUATIONS_FR":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer)
    majLesCtrl
    End Sub
    Nom : EtatTemporaire_16_SolutionTrouvee.PNG
Affichages : 170
Taille : 19,1 Ko

    Reste à vérifier.

    Cordialement.

  5. #5
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 129
    Points : 495
    Points
    495
    Par défaut
    Citation Envoyé par morobaboumar Voir le message
    Bonsoir membres du forum !
    J'ai trouvé à mon avis la solution en plaçant la procédure sur l’événement au formatage du détail de l'état "LISTE_DES_COMPOSANTS_NOTES_EVALUATIONS_FR":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer)
    majLesCtrl
    End Sub
    Reste à vérifier.
    Après plusieurs essais, j'ai créé une requête Sql à l'intérieur de l'état "LISTE_DES_COMPOSANTS_NOTES_EVALUATIONS_FR":

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Tbl_EVALUATION_NIVEAU_SCOLAIRE.NumEnregistreComposant, Tbl_EVALUATION_NIVEAU_SCOLAIRE.IdEcole, Tbl_EVALUATION_NIVEAU_SCOLAIRE.AnneeScol, Tbl_EVALUATION_NIVEAU_SCOLAIRE.NumInsCreleve, Tbl_EVALUATION_NIVEAU_SCOLAIRE.MleEleve, Tbl_EVALUATION_NIVEAU_SCOLAIRE.Nom_Prenoms_EleveComposant, Tbl_EVALUATION_NIVEAU_SCOLAIRE.COMPOSITION, Tbl_EVALUATION_NIVEAU_SCOLAIRE.NiveauCompositionFrancais, INFOS_COMPOSITION_FRANCAIS.Total_Notes, INFOS_COMPOSITION_FRANCAIS.MoyenneCompo, INFOS_COMPOSITION_FRANCAIS.Classement, INFOS_COMPOSITION_FRANCAIS.Appreciation
    FROM INFOS_COMPOSITION_FRANCAIS INNER JOIN Tbl_EVALUATION_NIVEAU_SCOLAIRE ON (INFOS_COMPOSITION_FRANCAIS.ID_Etab = Tbl_EVALUATION_NIVEAU_SCOLAIRE.IdEcole) AND (INFOS_COMPOSITION_FRANCAIS.anscol = Tbl_EVALUATION_NIVEAU_SCOLAIRE.AnneeScol) AND (INFOS_COMPOSITION_FRANCAIS.mle_Eleve = Tbl_EVALUATION_NIVEAU_SCOLAIRE.MleEleve)
    ORDER BY INFOS_COMPOSITION_FRANCAIS.Total_Notes DESC;

    ce qui me donne ce résultat:

    Nom : EtatTemporaire_18_SolutionTrouvee.PNG
Affichages : 167
Taille : 35,5 Ko

    Nom : EtatTemporaire_17_SolutionTrouvee.PNG
Affichages : 174
Taille : 38,0 Ko

    Mon problème actuel est que je souhaite trouver la méthode dans le code
    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
    qui permet d'afficher les notes des matières au format 00,00.

    Cordialement.

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 801
    Points : 14 869
    Points
    14 869
    Par défaut
    bonjour,
    qui permet d'afficher les notes des matières au format 00,00.
    Sauf si vous avez changé la structure de l'état, essayez en changeant les propriétés des contrôles n1 à n17 (ou dans les contrôles de l'état concerné):
    Format: Standard
    Décimales: 2

  7. #7
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 129
    Points : 495
    Points
    495
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    En changeant les propriétés des contrôles n1 à n17 (ou dans les contrôles de l'état concerné):
    Format: Standard
    Décimales: 2
    Bonsoir tee_grandbois,
    ça marche !

    Nom : EtatTemporaire_20.PNG
Affichages : 169
Taille : 37,9 Ko

    Bien que cette partie soit résolue, je suis avec vous car il y a deux autres parties en rapport avec cette discussion ci.

    Merci infiniment à vous et toute la famille developpez.net.
    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Faire correspondre les identifiants aux libéllés dans mon fichier CSV généré
    Par hiraku79 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/02/2014, 11h17
  2. Réponses: 13
    Dernier message: 18/09/2010, 22h59
  3. Sub valable pour toutes les forms d'une application
    Par serana71 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/05/2010, 15h49
  4. Base de données pour gérer les notes
    Par netsabes dans le forum Schéma
    Réponses: 6
    Dernier message: 23/11/2007, 18h52
  5. Pour convertir les dates aux types "datetime" sous
    Par nnn2050 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/01/2006, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo