cs_CCelia
Messages postés15Date d'inscriptionmardi 22 avril 2008StatutMembreDernière intervention24 avril 2008
-
23 avril 2008 à 17:04
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
24 avril 2008 à 15:47
Bonjour a tous,
je travaille actuellemnt sur un formulaire dans lequel je dispose de 2 listes déroulantes avec le nom ces tables de ma base
et je voudrais grâce à une procédure événementielle au clic d'un bouton de commande éxécuter une requête sql qui prendrait en compte le nom des tables sélectionner dans les listes déroulantes.
Voici ma procédure :
Public Sub entree_Click()
Dim db As Database
Dim rs As Recordset
Dim chainesql As String
Set db = CurrentDb
chainesql = "SELECT `" & [Forms]![calcul_entrees]![table1] & "`.`NumID` FROM `" & [Forms]![calcul_entrees]![table1] & "` LEFT JOIN `" & [Forms]![calcul_entrees]![table2] & "`ON `" & [Forms]![calcul_entrees]![table1] & "`.`NumID`=`" & [Forms]![calcul_entrees]![table2] & "`.`NumID` WHERE `" & [Forms]![calcul_entrees]![table1] & "` is null "
Set rs = db.OpenRecordset(chainesql)
DoCmd.OpenQuery chainesql, acViewNormal, acEdit
End Sub
mais lorsque j'éxécute, il m'affiche le message "trop peu de paramètres 1 attendu"
sachant que les tables que je séléctionne sont nommées comme cela "payes_suspendus_mois". est ce que cela pourrait être un problème de ponctuation?
ou quelqu'un aurait-il une autre solution pour que cette requête s'éxécute sur mes tables sélectionnées?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 23 avril 2008 à 20:06
Salut
Règles cent fois redites sur le forum :
- Les noms des champs et tables comportant des caractères spéciaux (espaces, accents ...) doivent être encadrés par des crochets [ et ] (pas des ' comme tu l'as fait)
- Si le champ est déclaré dans la DB en type :
- Numérique : Pas d'encadrement de la valeur
- Texte : Encadrement de la valeur par des '
- Dates : Encadrement de la valeur par des #
Exemple :
"SELECT [" & [Forms]![calcul_entrees]![table1] & "].NumID " & _
" FROM ..." & _" WHERE NumID 32 AND [champ texte spécial] 'codes-sources' " ...
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 24 avril 2008 à 15:47
Re
Oui, peut-être que le premier couple de [ et ] n'est pas utile puisque tu sembles désigner le nom exact de la table avec [Forms]![calcul_entrees]![table1]
Mais, je le répète, il ne faut PAS encadrer le NOM des champs, mais les valeurs qu'on veut y insérer
--> "ON " & [Forms]![calcul_entrees]![table1] & ".NumID = " & [Forms]![calcul_entrees]![table2] & ".NumID " & _
Peut-être même que cette syntaxe fonctionnerait puisque tu sembles travailler sous le VBA de Access et pas sous VB6 comme annoncé
--> "ON [Forms]![calcul_entrees]![table1].NumID = [Forms]![calcul_entrees]![table2].NumID " & _
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)