Bouton de commande avec procédure événementielle

Signaler
Messages postés
15
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
24 avril 2008
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
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)
Messages postés
15
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
24 avril 2008

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' " & _
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
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)