-
Syntaxe SQL dans le VBA
Hello tous,
Voilà, j'ai un petit problème concernant le SQL dans le VBA.
J'ai :
Table a : a1 – a2 – a3
Table b : b1 – b2
Une relation existe entre a1 et b1
Je souhaite mettre à jour a3 qui sera égal à une concaténation de a2 & b2
Je veux que ma requête SQL se lance quand j’appuie sur un bouton, donc je dois l’effectuer en VBA.
Donc, je pensais faire :
Code :
DoCmd.RunSQL ("UPDATE a INNER JOIN b ON a.a1 = b.b1 SET a.a3 = a.a2 & b.b2 WHERE a.a1 LIKE b.b1 "
DoCmd.RunSQl est-elle la bonne commande pour lancer la requête ?
Autre problème est, je pense, la syntaxe … car faut-il utiliser le « . » entre le nom de la table et le champ ? Ou y a-t-il une autre syntaxe à respecter du type ( ) ou [ ] ou ! ?
Et autre question, quand on insère du texte, on le met entre apostrophe ‘ ‘ ?
Merci de votre aide ...
A Plus !!
-
bonjour Pithonnette,
Proposition de recette pour créer ton sql
1° créer la requête avec l’aide Access
2° copier le « sql brut » et le coller dans la fenêtre d’exécution pour y apporter quelques retouches
3° mettre tout sur une ligne ( se positionner sur la première ligne et End tab Delete)
4° remplacer les données statiques dans la requête par le nom des variables
Exemple
Formulaires![LeFormulaireDsLequelJeTravaille]![MonContrôle] - - -> Me. [MonContrôle]
5° trancher le « sql brut » en parties fixes (encadrées de simples guillemets) et parties variables en les reliant par des ‘ & ’
6° si une tranche variable est de type texte, tripler le guillemet final de la tranche qui le précède et le guillemet initial de la tranche qui le suit.
7° traduire le reste en syntaxe Vba : Formulaires - - -> Forms, les points virgules - - - > virgules (dans les fonctions par exemple)
8° insérer le « sql toiletté » dans le code
9° croiser les doigts
A l’inverse
Proposition de recette pour comprendre pourquoi ton sql ne fonctionne pas
1° dans le code, créer le sql dans une variable avant de l’utiliser
2° placer
Code:
debug .print CetteVariable
juste avant l’instruction où on l’utilise
3° provoquer l’exécution du code litigieux
4° récupérer dans la fenêtre d’exécution le sql généré par le programme
5° ouvrir une nouvelle requête en mode création
6° à l’invite « ajouter une table », cliquer sur FERMER
7° cliquer sur sql dans la barre menu
8° remplacer « Select ; » par le copier coller du sql ci-dessus.
9° cliquer sur affichage dans le menu et constater le contenu de l’exécution du sql.
10° rougir de confusion et essayer de faire mieux la prochaine fois.
Je rajouterais cela : http://cafeine.developpez.com/access...el/debugprint/