Je m'explique, je veux afficher le contenu de la combobox qui s'appelle COMBOHORAIRE, en fonction des informations presents dans une table de la base.
J'ai ma table ABSENCE qui regroupe le numéro de l'abs,la date,le numéro stagiaire, le numéro section, le numéro de la plage horaire d'abs et le numéro matière.
lorsque je lance mon programme, j'ai une première fenétre qui s'ouvre ou je rentre les info du stagiaire pour l'ajouter dans la table ABSENCE, je selectionne la section puis en fonction de la section j'ai une liste de noms qui apparai dans la COMBONOMS, je selectionne donc le noms et pareil que la section, j'ai la COMBOHORAIRE qui se remplis en fonction des absence(plage_horaire) ou non du stagiaire. Mais je n'arrrive pas a faire marcher ce bout de code. Soit sa ne marche qu'avec un stagiaire soit sa m'efface tous. voici le code:
Petite précision, ma table horaire se compose comme ceci:
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
34
35
36
37
38
39
40
41
42
43
44
45 'Remplis la liste des horaires en fonction du nom , et des absences du jour même. Private Sub ComboNoms_click() ComboHoraire.Clear Dim Rabs, Rstag, Rhor, Nums, connex 'connexion a la base de données Set connex = CreateObject("ADODB.Connection") connex.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\PTI\Absence.mdb';" ' Selection du numero stagiaire Set Rstag = CreateObject("ADODB.Recordset") Set Rstag.ActiveConnection = connex Rstag.open "SELECT * FROM Stagiaires WHERE Nom_stag= '" & ComboNoms & "'" ' Selection des plages horaires de la table HORAIRE en fonction ' des plages horaires présentes dans la table ABSENCE Set Rhor = CreateObject("ADODB.Recordset") Set Rhor.ActiveConnection = connex Rhor.open "SELECT * FROM Horaire WHERE Num_horaire NOT IN" & _ "(SELECT Plage_abs FROM Absence WHERE Date_abs=#" & Date & "# AND " & _ "Num_stag= " & Rstag("Num_stag") & " ORDER BY Plage_abs)ORDER BY Num_horaire" ' Selection des plages horaires figurant dans la table ABSENCE Set Rabs = CreateObject("ADODB.Recordset") Set Rabs.ActiveConnection = connex Rabs.open "SELECT Plage_abs FROM Absence WHERE Date_abs=#" & Date & "# AND Num_stag= " & Rstag("Num_stag") Do While Not Rhor.EOF ' je compare les deux valeurs si celle ci son egale a 1 et ' l'autre a 3 alors je naffiche pas la plage horaire numéro 3 If Rabs("Plage_abs") = "1" And Rhor("Num_horaire") = "3" Then Rhor.MoveNext Else 'ajouter dans la combo lenregistrement en cours ComboHoraire.AddItem Rhor!Horaire 'passer à lenregistrement suivant Rhor.MoveNext End If Loop End Sub
num_horaire-----plage_horaire
---1------------8h30/10h30
---2------------10h30/12h30
---3------------Matin
---4------------13h30/15h30
---5------------15h30/17h30
---6------------Aprés-midi
---7------------Journée
Dans mon code, je veux afficher que les plage horaire ne figurant pas dans la table ABSENCE mais aussi en fonction de la plage horaire certaines ne doivent pas s'afficher, exemple:
" un stagiaire est absence de 8h30/10h30 donc lors d'une nouvelle saisie (se faisant dans la même journée) la plage horaire 8h30/10h30,ainsi que le Matin et la Journée ne doivent pas s'afficher. "
J'ai en parti réussi a ne pas afficher la plage horaire Matin mais si je selectionne un autre stagiaire j'ai la même liste qui apparait ou la liste ne se rempli pas , or j'efface la liste a chaque changement de stagiaire.
Si quelqu'un pouvait m'aider, ou du moins me guider dans mon code je l'en remercie d'avance. sa fait 3 jour que j'y sui dessus et sa me prend un tout petit peu la tête.
Partager