|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : janvier 2011 Messages : 308 ![]() |
Bonjour à tous,
Suivant les conseils des pros de ce forum j'ai utilisé le mode SQL d'access pour faire une requête action, mais quand je l'insère en VBA la syntaxe est incorrecte : Code :
DoCmd.RunSQL "UPDATE [Familles Produits / Prestations] SET WHERE ((([Familles Produits / Prestations].IdFamilleProduitPrestation)=[Formulaires]![Familles Produits / Prestations]![IdFamilleProduitPrestation]));" Merci à tous |
|
|
00
|
|
|
#2 |
![]() ![]() Daniel Inscription : juillet 2006 Messages : 1 220 ![]() |
|
|
|
00
|
|
|
#3 | |||
|
Membre régulier
![]() Inscription : janvier 2011 Messages : 308 ![]() |
Citation:
Code :
- Faut il garder le "SET" aussi ? Merci |
|||
|
|
00
|
|
|
#4 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
La méthode la moins frustrantre avec le SQL de Access c'est d'utiliser l'éditeur de requête. D'y composer ta requête via les icônes et le glisser-déplacer puis de basculer vers l'affichage en SQL.
Tu vas ainsi pouvoir voir ce que Access attend comme syntaxe et l'adapter à ton besoin. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#5 | |
|
Membre régulier
![]() Inscription : janvier 2011 Messages : 308 ![]() |
Citation:
Donc j'en suis tjs au même point ! |
|
|
|
00
|
|
|
#6 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Peux-tu poster le SQL généré par Access ?
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#7 |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonsoir,
marot_r a posté plus vite que moi ![]() il s'agit d'une erreur de syntaxe SQL. Derrière SET il manque une ou plusieurs affectations. Liens sur le SQL d'Access : Un moyen simple pour avoir une idée du SQL dont on a besoin : Créer une requête dans Access avec des valeurs littérales. Passer en mode affichage SQL. tu obtiens ton SQL.A toi ensuite de le transposer en VBA, et de faire en sorte que les valeurs littérales puissent être remplacées par des éléments variables. Autre chose : SQL utilise une notation anglo-saxonne. [Formulaires] devient [Forms] Comme devient Like VraiFaux devient IIf ... La liste est très longue. Comme je l'ai dis plus haut, le mieux est de créer la requête avec Access et de passer à l'affichage SQL. Tout sera traduit comme il faut. A+ |
|
|
00
|
|
|
#8 | |
|
Membre régulier
![]() Inscription : janvier 2011 Messages : 308 ![]() |
Citation:
On dirait que vous avez mal lu ce que j'ai écrit plus haut : Je vous ai mis le SQL d' Access dans mon premier message, or évidement il n'est pas accepté tel quel ... Donc comment le mettre en forme ? J'ai besoin d'un coup de pouce pour ne pas y passer encore des heures ! J'ai mis un exemple simple avec une seule condition ... Merci |
|
|
|
00
|
|
|
#9 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Peux-tu poster le SQL générer par Access pour la requête qui te pose le problème ? S'il elle contient 3 conditions, fait une requête avec 3 conditions. Une fois que j'aurais le SQL je vais pouvoir te le 'convertir' en syntaxe VBA valide.
Le SQL dans le code c'est TRÈS frustrant mais on fini par y arriver. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#10 | |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Citation:
Si tu essaie de l'exécuter (je dis bien exécuter, pas afficher), Access te dira qu'il doit y avoir au moins un champ de destination. Tu n'a rien mis dans la ligne "mise à jour". A+ |
|
|
|
00
|
|
|
#11 | |
|
Membre régulier
![]() Inscription : janvier 2011 Messages : 308 ![]() |
Citation:
Le SQL était malheuresement tronqué dans mon premier message, le voici : UPDATE [Familles Produits / Prestations] SET [Familles Produits / Prestations].Famille = [Formulaires]![Familles Produits / Prestations]![Famille], [Familles Produits / Prestations].Type = [Formulaires]![Familles Produits / Prestations]![Type], [Familles Produits / Prestations].Description = [Formulaires]![Familles Produits / Prestations]![Description] WHERE ((([Familles Produits / Prestations].IdFamilleProduitPrestation)=[Formulaires]![Familles Produits / Prestations]![IdFamilleProduitPrestation])); Venant tel quel d' access ... Ce que je recherche c'est qu'il m'actualise 3 champs d'un formulaire indépendant (Famille,type,description) avec comme critère la référence à la clé principale qui devrait permettre de distinguer l'enregistrement. |
|
|
|
00
|
|
|
#12 | ||||
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Code :
Code :
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
||||
|
|
00
|
|
|
#13 | |||||
|
Membre régulier
![]() Inscription : janvier 2011 Messages : 308 ![]() |
Citation:
Il me reste une question, comment déclencher la requête ? On ne peut plus utiliser "RunSQL" ? Merci |
|||||
|
|
00
|
|
|
#14 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Tu mets simplement En le construisant dans une chaîne de caractère à part, il est plus facile d'examiner la syntaxe, et éventuellement de l'altérer, que directement dans le RunSQL mais le résultat est le même.
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#15 | |
|
Membre régulier
![]() Inscription : janvier 2011 Messages : 308 ![]() |
Citation:
Je viens de me rendre compte que la version 2010 d' access accepte la syntaxe des requêtes générées tel quel : Il m'a suffit de mettre dans le code " & _" pour sauter une ligne à chaque fois et rajouter un guillemet à chaque début de ligne et le tour était joué !!! Il serait peut être bon d'en informer les autres utilisateurs qui continuent à appliquer l'ancienne méthode ... En tous cas merci beaucoup pour votre aide, chapeau ! |
|
|
|
00
|
|
|
#16 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
ce n'est pas une nouveauté de 2010, cela existe depuis au moins la version 2.0 :o). Tu peux le faire avec n'importe quelle instruction.
Par exemple : Il y a une contraite sur le nombre de _ qu'on peut utiliser. Je crois que c'est une dizaine. Personnellement je trouve aussi que cela rend plus dificille à lire et plus difficile à débugger. Le seul endroit ou je m'en sert c'est pour les signatures de fonction qui comportent beaucoup de paramêtres. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#17 | |
|
Membre régulier
![]() Inscription : janvier 2011 Messages : 308 ![]() |
Citation:
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com