Bonjour,
Je post sur le forum car mon souci m'est plutôt obscur, suite à des recherches sur les tutoriels j'ai réussi à dénicher un source parfait pour mon appli. Il s'agit de celui sur la géneration d'une liste déroulante en fonction de la précedente!
Le probléme viens du fait que j'utilise le même code, et ce 3 fois de suite, mais pour la 4 il y a un souci, en effet je ne récupére pas le bon champ, alors que je ne change rien par rapport au fois précedente!
Voici une liste qui fonctionne correctement:
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 Private Sub cmbPoste_AfterUpdate() Dim lngIDPoste As Long Dim SQL As String '' Vérifie que l'on a cliqué sur une catégorie pour éviter le NULL If Not IsNumeric(Me!cmbPoste) Then Exit Sub '' Affecte la valeur de ID_Atelier à la variable lngIDAt lngIDPoste = Me!cmbPoste '' Construit la chaîne SQL avec la catégorie concernée SQL = "SELECT T_Agent.ID_Agent, Nom, Prenom FROM T_Agent,T_Qualification WHERE T_Qualification.Id_Poste =" & lngIDPoste & " AND T_Agent.ID_Agent = T_Qualification.id_Agent ORDER BY Nom" '' Affecte la chaîne SQL à la liste des agents cmbAgent.RowSource = SQL '' Déverrouille la liste des agents cmbAgent.Enabled = True '' Donne le focus la liste des agents cmbAgent.SetFocus '' Déroule la liste des agents cmbAgent.Dropdown End Sub
lngIDPoste = Me!cmbPoste la valeur enregistré est bien un long! L'ID_Poste en l'occurence.
Ensuite, à la ligne suivante je sauvegarde la requête SQL me permettant de récupere l'ID de l'agent son nom et prénom. Et j'affecte cet requête SQL a ma liste, celle-ci affichant bien les personne concerné par les critéres précedents!
Mais lorsque je choisi un des agents, je souhaite nous plus mettre à jour une liste mais une case à cocher, pour cela j'utilise DAO, mais le premier probléme avant même de m'attaquer à la compréhension de l'utilisation DAO est que je récupére le nom de l'agent et non son ID. Ce qui pose probléme étant donné que je vérifie grâce à une valeur numérique si un champ est sélectionner mais également pour ma requête qui suit.
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
46
47
48
49
50
51
52
53
54
55 Private Sub cmbAgent_AfterUpdate() Dim lngIDPoste As Long Dim lngIDAgent As Long Dim SQL As String Dim Dispense As Boolean '' Insertion de la base de donnée en cours dans la variable Db Dim oRst As DAO.Recordset Dim oDb As DAO.Database Set oDb = CurrentDb '' Active la case à cocher de la dispense ainsi que la durée. CocherDispense.Enabled = True DureeDispense.Enabled = True '' Vérifie que l'on a cliqué sur une catégorie pour éviter le NULL ''///////////////////////////////////////////////////// ''///////////////////////////////////////////////////// ''C'est la ligne suivante qui ne va pas, en effet Me!cmbAgent est en faite ''le nom de l'agent. If Not IsNumeric(Me!cmbAgent) Then Exit Sub "//////////////////////////////////////////////////// "//////////////////////////////////////////////////// '' Affecte la valeur de ID_Atelier à la variable lngIDAt lngIDAgent = Me!cmbAgent lngIDPoste = Me!cmbPoste SQL = "SELECT Dispense_Medical FROM T_Qualification WHERE id_Agent =" & lngAgent & " AND id_Poste =" & lngPoste & "" Set oRst = oDb.OpenRecordset(SQL, dbOpenDynaset) MsgBox "Le champ dispense à pour valeur: " & oRst.Fields("Dispense_Medical").Value Dispense = oRst.Fields("Dispense_Medical").Value '' Affecte la valuer à la case cocher de dispense Me!CocherDispense = Dispense oRst.Close oDb.Close Set oRst = Nothing Set oDb = Nothing End Sub
Si vous voyes un tutoriel faisant réference à mon probléme mais que je n'aurai pas vu, je vous prie de me donner le lien ou si vous connaisez la réponse à ce petit souci qui je suis sur n'est rien, merci d'avance de me la donner.
Je retourne essayer d'arranger ça et j'indiquerai si oui ou non, j'ai réussi à trouver la solution, merci.
Partager