Récupération variable VBA pour requête SQL
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 :
Code:
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 |
Et celui de la requête "R_Page_1" :
Code:
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 & "')); |
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.
Merci infiniment pour votre aide.