hello Marie
la seule chose à vérifier quand on écrit du SQL dans un prog VB, c'est la syntaxe du texte réel qui est envoyé
J'ai déjà eut l'occasion d'écrire que le débuggeur VB n'est pas un débuggeur SQL ! !
pour ton cas, il me semble que tu devrait écrire plutôt ceci
sqlstatement:="SELECT * FROM Employés WHERE [N° employé]= " & Me![N° employé]
4 changements:
- enlevé les [ sur Employés: c'est un nom de table sans caractères spéciaux
- enlevé la première cassure, en effet: pas besoin de concaténer des textes dont on spécifie le contenu entre guillemets, de plus, il manquait peut être un espace
- remplacé les ' par des [ sur le nom du champ en effet, comme ça, SQL comprends un nom de champ alors qu'avec les ' SQL comprend un texte
- sorti le Me![N° employé] ici deux possibilités:
+ + soit on transmet WHERE [N° employé]= 12
+ + soit on transmet WHERE [N° employé]= forms!super_formulaire![N° employé]
il faut bien voir que ME signifie "le formulaire courant", ce qui a une valeur au moment ou le bouton fonctionne, par contre si on met ce texte dans le SQL, quand la requête va s'exécuter, on ne saura pas exprimer correctement ce ME
quand c'est possible, je préfère la 1° (=12) le critère est plus simplement exprimé donc le SQL plus rapide
par contre dans le problème des numériques décimaux provoque d'autres solutions à cause du point décimal: point ou virgule?
certains utilisent la fonction replace, dans ce cas je préfère la deuxième solution: en interne Access se débrouille de l'interprétation des séparateurs décimaux
plus généralement dans ces cas:
- je place un espion sur la variable qui contient le SQL
- je relève sa valeur juste avant utilisation
- je l'essaye dans une requête
- je la modifie éventuellement en mode création (le visuel, c'est pas mal)
- je modifie le VB en conséquence
Bonne chance
Partager