Clause FROM Requête SQL (Access 2007)

[Fermé]
Signaler
-
 Mllx -
Bonjour tout le monde !

J'ai un problème avec une requête SQL, dont voici le code :

SELECT Points FROM Compta
UPDATE Points SET Points.Compta = Points!Compta+50
WHERE (((Nom_Prenom.Compta)=Forms.Form1.Liste1));

Ou Compta est une table contenant les champs Points et Nom_Prenom, et Liste1 une liste déroulante d'un formulaire Form1 qui permet de choisir une valeur du champ Nom_Prenom.

A chaque fois que j'exécute cette requête, j'obtiens le même message d'erreur : Erreur de syntaxe dans la clause FROM : qu'est-ce qui ne vas pas ????

D'autre part, si vous pouviez me dire que faut-il mettre en code SQL pour obtenir des données par récupération d'une liste déroulante ; je ne suis pas sûr du tout que "Forms.Form1.Liste1" soit valable.

Merci d'avance pour votre aide!

5 réponses

Messages postés
3163
Date d'inscription
dimanche 28 octobre 2007
Statut
Membre
Dernière intervention
25 avril 2010
148
Bonjour,

Je pense aussi que ça soit ton "Forms.Form1.Liste1" qui pose problème, je te conseil de stocker la valeur dans une variable qui servira de référence.

Aussi niveau du From un pti pasage à la ligne pourrait peut-être résoudre le probème :)


SELECT Points 
FROM Compta
UPDATE Points SET Points.Compta = Points!Compta+50
WHERE (((Nom_Prenom.Compta)=Forms.Form1.Liste1)); 



Par ailleurs je ne sais plus si la syntaxe du Update est correcte (ordre des Select, From, etc)
Messages postés
115
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
5 août 2010
6
Salut,
Le problème ici est que tu fais une requête de sélection et une requête de mise à jour en même temps. Ces deux requêtes doivent être effectuées séparément.

Tu devrais donc avoir SELECT Point FROM Compta; (avec le point-virgule à la fin pour indiquer la fin de l'instruction) et ensuite ton UPDATE.

D'autre part, ton Update ne semble pas correct. Si Compta est une table et Points un champ, pour accéder à ce champ tu dois écrire Compta.Points et non l'inverse. De même, tu dois écrire Compta.Points + 50, et Compta.Nom_Prenom.

@+
Messages postés
3163
Date d'inscription
dimanche 28 octobre 2007
Statut
Membre
Dernière intervention
25 avril 2010
148
Ah je trouvais ça louche quand même un Select et un Update dans la même requête (trop rouillé ><) !
Messages postés
115
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
5 août 2010
6
Et bien oui, le Update est également une requête de sélection, puisqu'à la fin on y met l'instruction Where. On peut ne mettre à jour que quelques enregistrements, c'est donc une requête de sélection doublée d'une requête de modifications du contenu de la base.
Suite à vos conseils, voici mon nouveau code :

SELECT Points FROM Compta;

UPDATE Points SET Compta.Points = Compta.Points + 50
WHERE (((Compta.Nom_Prenom)=Forms.Form1.Liste1));

Le problème, c'est que ca marche toujours pas !
Quand je clique sur exécuter, j'ai droit à un message d'erreur : Caractères trouvés après la fin de l'instruction SQL.

Qu'est ce qu'il y a encore a corriger ??

Merci beaucoup pour votre aide !
C'est le point virgule qui n'est pas à la fin de la requête !
Messages postés
115
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
5 août 2010
6
Le truc, c'est que tu n'as pas besoin de ta requête de sélection.
Tape juste ton Update et enlève le Select.
Ca devrait marcher.

@+