Bonjour à tous,
Je rencontre un problème quant à l'utilisation d'une variable VBA dans une requête SQL :
- j'ai une table nommée "T_Page_1" dont tous les champs sont en format texte,
- j'ai créé un formulaire avec 3 combobox nommées cbocommunes, cbotitre et cbostatut. Leurs valeurs ont été entrées dans la propriété "contenu" et "liste de valeurs" a donc été activé. cbocommunes comporte 34 choix possibles, cbotitre : 5 choix et cbostatut : 9 choix possibles. Le choix fait dans chaque combobox est mémorisé dans une variable string portant le nom de sa combobox respective puis est transformé en nombre, mais toujours au format texte,
- cbostatut comporte un événement sur clic exécutant une requête SQL SELECT en fonction des choix faits dans les 3 combobox,
- la requête se nomme "R_Page_1",
- j'ai également inseré des MsgBox afin de vérifier la valeur des variables après leur transformation,
Le problème est que j'obtiens 5 champs vides après exécution de la requête SQL, je n'arrive pas apparemment à récupérer les 3 variables en question dans celle-ci.
Voici le code :
Et celui de la requête "R_Page_1" :
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90 Option Compare Database Private Sub cbocommunes_BeforeUpdate(Cancel As Integer) Dim cbocommunes As String MsgBox Me.cbocommunes If Me.cbocommunes = "-- Toutes --" Then cbocommunes = "00" Else If Me.cbocommunes = "01. Bélep" Then cbocommunes = "01" Else If Me.cbocommunes = "02. Boulouparis" Then cbocommunes = "02" Else If Me.cbocommunes = "03. Bourail" Then cbocommunes = "03" Else If Me.cbocommunes = "04. Canala" Then cbocommunes = "04" Else If Me.cbocommunes = "05. Dumbéa" Then cbocommunes = "05" Else If Me.cbocommunes = "06. Farino" Then cbocommunes = "06" Else If Me.cbocommunes = "07. Hienghène" Then cbocommunes = "07" Else If Me.cbocommunes = "08. Houaïlou" Then cbocommunes = "08" Else If Me.cbocommunes = "09. Ile des Pins" Then cbocommunes = "09" Else If Me.cbocommunes = "10. Kaala Gomen" Then cbocommunes = "10" Else If Me.cbocommunes = "11. Koné" Then cbocommunes = "11" Else If Me.cbocommunes = "12. Koumac" Then cbocommunes = "12" Else If Me.cbocommunes = "13. La Foa" Then cbocommunes = "13" Else If Me.cbocommunes = "14. Lifou" Then cbocommunes = "14" Else If Me.cbocommunes = "15. Maré" Then cbocommunes = "15" Else If Me.cbocommunes = "16. Moindou" Then cbocommunes = "16" Else If Me.cbocommunes = "17. Mont Dore" Then cbocommunes = "17" Else If Me.cbocommunes = "18. Nouméa" Then cbocommunes = "18" Else If Me.cbocommunes = "19. Ouégoa" Then cbocommunes = "19" Else If Me.cbocommunes = "20. Ouvéa" Then cbocommunes = "20" Else If Me.cbocommunes = "21. Païta" Then cbocommunes = "21" Else If Me.cbocommunes = "22. Poindimié" Then cbocommunes = "22" Else If Me.cbocommunes = "23. Ponérihouen" Then cbocommunes = "23" Else If Me.cbocommunes = "24. Pouébo" Then cbocommunes = "24" Else If Me.cbocommunes = "25. Pouembout" Then cbocommunes = "25" Else If Me.cbocommunes = "26. Poum" Then cbocommunes = "26" Else If Me.cbocommunes = "27. Poya" Then cbocommunes = "27" Else If Me.cbocommunes = "28. Sarraméa" Then cbocommunes = "28" Else If Me.cbocommunes = "29. Thio" Then cbocommunes = "29" Else If Me.cbocommunes = "30. Touho" Then cbocommunes = "30" Else If Me.cbocommunes = "31. Voh" Then cbocommunes = "31" Else If Me.cbocommunes = "32. Yaté" Then cbocommunes = "32" Else If Me.cbocommunes = "33. Kouaoua" Then cbocommunes = "33" MsgBox cbocommunes End Sub Private Sub cbostatut_BeforeUpdate(Cancel As Integer) Dim cbostatut As String MsgBox Me.cbostatut If Me.cbostatut = "-- Tous --" Then cbostatut = "0" Else If Me.cbostatut = "Compte propre" Then cbostatut = "1" Else If Me.cbostatut = "GIE" Then cbostatut = "2" Else If Me.cbostatut = "Groupement de fait" Then cbostatut = "3" Else If Me.cbostatut = "SCEA, SCEC, SA..." Then cbostatut = "4" Else If Me.cbostatut = "Autre personne morale" Then cbostatut = "5" Else If Me.cbostatut = "Autre personne physique" Then cbostatut = "6" Else If Me.cbostatut = "Pas de réponse" Then cbostatut = "" Else If Me.cbostatut = "Trop de réponses" Then cbostatut = "9" Else MsgBox cbostatut End Sub Private Sub cbostatut_Click() DoCmd.OpenQuery ("R_Page_1") End Sub Private Sub cbotitre_BeforeUpdate(Cancel As Integer) Dim cbotitre As String MsgBox Me.cbotitre If Me.cbotitre = "-- Tous --" Then cbotitre = "0" Else If Me.cbotitre = "Superficie > 1,7 ha" Then cbotitre = "1" Else If Me.cbotitre = "Seuil de 350 points" Then cbotitre = "2" Else If Me.cbotitre = "Pas de réponse" Then cbotitre = "" Else If Me.cbotitre = "Trop de réponses" Then cbotitre = "9" Else MsgBox cbotitre End Sub
J'ai trouvé quelques réponses à ce sujet dans les FAQ mais je ne suis pas très doué car ça ne fonctionne toujours pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT Page_1.COM, Page_1.TITRE, Page_1.STATUT, Page_1.NOM, Page_1.PRENOM FROM Page_1 WHERE (((Page_1.COM)='" & cbocommunes & "') AND ((Page_1.TITRE)='" & cbotitre & "') AND ((Page_1.STATUT)='" & cbostatut & "'));
Merci infiniment pour votre aide.
Partager