Rechercher : dans
Par :

Clause FROM Requête SQL (Access 2007)

Dernière réponse le 2 sep 2008 à 09:17:37 rougv86, le 1 sep 2008 à 09:00:44 
 Signaler ce message aux modérateurs

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!

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « Clause FROM Requête SQL (Access 2007) » dans :
SQL - éviter les doublons dans un SELECT VoirProblème Comment éviter les doublons dans les résultats d'une requête SQL ? Solution Il suffit d'utiliser la clause DISTINCT entre SELECT et les champs. Exemple : SELECT distinct id,nom,prenom FROM matable Plus d'informations ...

1

@nGel_974, le 1 sep 2008 à 09:14:59

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)
Norton oO ? Mais c'est un Virus !!! On compte jusqu'à 3 et on désinstalle !!! 3 x)
Vista Rules !!!
GoOgle un ami qui vous veut du bien :)

Répondre à @nGel_974

2

basshero816, le 1 sep 2008 à 09:40:26

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.

@+

Répondre à basshero816

3

@nGel_974, le 1 sep 2008 à 10:01:47

Ah je trouvais ça louche quand même un Select et un Update dans la même requête (trop rouillé ><) ! Norton oO ? Mais c'est un Virus !!! On compte jusqu'à 3 et on désinstalle !!! 3 x)
Vista Rules !!!
GoOgle un ami qui vous veut du bien :)

Répondre à @nGel_974

4

basshero816, le 1 sep 2008 à 10:07:50

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.

Répondre à basshero816

5

rougv86, le 1 sep 2008 à 17:50:34

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 !

Répondre à rougv86

6

 basshero816, le 2 sep 2008 à 09:17:37

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.

@+

Répondre à basshero816
Collection CommentÇaMarche.net