Bouton de commande avec procédure événementielle

cs_CCelia Messages postés 15 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 24 avril 2008 - 23 avril 2008 à 17:04
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 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?

merci d'avance pour les réponses.

3 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
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)
0
cs_CCelia Messages postés 15 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 24 avril 2008 1
24 avril 2008 à 09:46
j'ai bien changé comme tu l'as dit mais l'erreur persiste

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]![table2] & "].'NumID' is null "

je précise que NumID est un champ texte il est donc normal qu'il soit encadré par des '

il n'accepte pas cette partie :
"ON [" & [Forms]![calcul_entrees]![table1] & "].'NumID'=[" & [Forms]![calcul_entrees]![table2] & "].'NumID' " & _
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
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)
0
Rejoignez-nous