OVH Cloud OVH Cloud

probleme sur instruction update

10 réponses
Avatar
gangrel
voila ma requete d'update:

UPDATE visites SET visites.datevisite =3D [visitesrecopie].
[datevisite]
WHERE [visites].[nuvisite] IN ( SELECT nuvisite FROM=20
visitesrecopie IN 'D:\prog\projet base AJ\essai.mdb');

en fait c'est cens=E9 me mettre a jour une table a partir=20
des =E9l=E9ments d'une autre table.
C'est ca que je veux en tout cas.

Ma question en plus simple c'est comment mettre a jour une=20
table a partir des donn=E9es d'une autre table???

le probleme est qu'apparement on peut faire un update=20
seulement en mettant set truc =3D 'nouvelle valeur' et pas=20
set truc =3D [nom de table]. [nom de colonne] where tout=20
ca...


merci !!!!!!!!

merci!
.

10 réponses

Avatar
Daniel Carollo
Bonjour Gangrel!

Vous vous fourvoyez quelque peu, il est tout a fait possible de faire une
mise a jour de valeurs d'une table a partir d'une autre table. L'astuce
consiste a passer par un jointure, avec un requete du genre:
UPDATE MaTable SET MaTable.MonChamp = MonAutreTable.MonAutreChamp
FROM MaTable INNER JOIN MonAutreTable ON MaTable.LeChamp MonAutreTable.LeChampAussi.
WHERE MaCondition.

Et ouala! Bonne continuation,

--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"gangrel" wrote in message
news:0acf01c3adaa$ba703ff0$
voila ma requete d'update:

UPDATE visites SET visites.datevisite = [visitesrecopie].
[datevisite]
WHERE [visites].[nuvisite] IN ( SELECT nuvisite FROM
visitesrecopie IN 'D:progprojet base AJessai.mdb');

en fait c'est censé me mettre a jour une table a partir
des éléments d'une autre table.
C'est ca que je veux en tout cas.

Ma question en plus simple c'est comment mettre a jour une
table a partir des données d'une autre table???

le probleme est qu'apparement on peut faire un update
seulement en mettant set truc = 'nouvelle valeur' et pas
set truc = [nom de table]. [nom de colonne] where tout
ca...


merci !!!!!!!!

merci!
.
Avatar
gangrel
bonjour, bonjour,

je ne me fourvoie pas malheureusement.
J'ai testé la requete: d'ailleurs la voici telle quel:

UPDATE visites SET visites.datevisite = [visitesrecopie].
[datevisite], visites.daterelance = [visitesrecopie].
[daterelance], visites.carteentretient = [visitesrecopie].
[carteentretient], visites.vip = [visitesrecopie].[vip],
visites.memovisite = [visitesrecopie].[memovisite],
visites.nuentreprise = [visitesrecopie].[nuentreprise]
FROM visites INNER JOIN visitesrecopie ON [visites].
[nuvisites]=[visitesrecopie].[nuvisites]
WHERE [visites].[nuvisite] IN ( SELECT nuvisite FROM
visitesrecopie);

malheureusement je ne peux meme pas la sauvegarder; access
me met comme message:
syntax error missing operator in query expression.....
et lorsque je clique "ok" le curseur se met vers le FROM
et voila.
Je ne comprends pas; pourtant dans ma tete cette requete
marche mais access a l'air plus difficile que mon cerveau

-----Message d'origine-----
Bonjour Gangrel!

Vous vous fourvoyez quelque peu, il est tout a fait
possible de faire une

mise a jour de valeurs d'une table a partir d'une autre
table. L'astuce

consiste a passer par un jointure, avec un requete du
genre:

UPDATE MaTable SET MaTable.MonChamp =
MonAutreTable.MonAutreChamp

FROM MaTable INNER JOIN MonAutreTable ON MaTable.LeChamp =
MonAutreTable.LeChampAussi.
WHERE MaCondition.

Et ouala! Bonne continuation,

--
Daniel :-)

Computing Technologies International - www.computing-
tech.com - We

provide solutions...

"gangrel" wrote in message
news:0acf01c3adaa$ba703ff0$
voila ma requete d'update:

UPDATE visites SET visites.datevisite = [visitesrecopie].
[datevisite]
WHERE [visites].[nuvisite] IN ( SELECT nuvisite FROM
visitesrecopie IN 'D:progprojet base AJessai.mdb');

en fait c'est censé me mettre a jour une table a partir
des éléments d'une autre table.
C'est ca que je veux en tout cas.

Ma question en plus simple c'est comment mettre a jour une
table a partir des données d'une autre table???

le probleme est qu'apparement on peut faire un update
seulement en mettant set truc = 'nouvelle valeur' et pas
set truc = [nom de table]. [nom de colonne] where tout
ca...


merci !!!!!!!!

merci!
..



.



Avatar
Daniel Carollo
Bonjour!

Le probleme est probablement avec votre clause WHERE, qui dans ce cas est
completement inutile: le INNER JOIN ne va ramener que l'intersection des
deux tables...

Essayez en supprimant la clause WHERE tout simplement.

--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"gangrel" wrote in message
news:030401c3adc0$b128c0f0$
bonjour, bonjour,

je ne me fourvoie pas malheureusement.
J'ai testé la requete: d'ailleurs la voici telle quel:

UPDATE visites SET visites.datevisite = [visitesrecopie].
[datevisite], visites.daterelance = [visitesrecopie].
[daterelance], visites.carteentretient = [visitesrecopie].
[carteentretient], visites.vip = [visitesrecopie].[vip],
visites.memovisite = [visitesrecopie].[memovisite],
visites.nuentreprise = [visitesrecopie].[nuentreprise]
FROM visites INNER JOIN visitesrecopie ON [visites].
[nuvisites]=[visitesrecopie].[nuvisites]
WHERE [visites].[nuvisite] IN ( SELECT nuvisite FROM
visitesrecopie);

malheureusement je ne peux meme pas la sauvegarder; access
me met comme message:
syntax error missing operator in query expression.....
et lorsque je clique "ok" le curseur se met vers le FROM
et voila.
Je ne comprends pas; pourtant dans ma tete cette requete
marche mais access a l'air plus difficile que mon cerveau
Avatar
3stone
Salut,

"gangrel"
je ne me fourvoie pas malheureusement.
J'ai testé la requete: d'ailleurs la voici telle quel:



Lie la table de cette base "D:progprojet base AJessai.mdb"
a ta base actuelle... et tu pourra faire la mise à jour comme Daniel te le propose!

Pour lier des tables :
menu Fichier, Données externes, Lier les tables.



--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------
Avatar
gangrel
re:

J'ai essayé de lier les tables mais ca ne fait pas avancer
les choses; pour ainsi dire je piétine. Le message
d'erreur est toujours le meme. C'est désespérant.
-----Message d'origine-----
Salut,

"gangrel"
je ne me fourvoie pas malheureusement.
J'ai testé la requete: d'ailleurs la voici telle quel:



Lie la table de cette base "D:progprojet base
AJessai.mdb"

a ta base actuelle... et tu pourra faire la mise à jour
comme Daniel te le propose!


Pour lier des tables :
menu Fichier, Données externes, Lier les tables.



--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------




.



Avatar
gangrel
ET bien quelle déception!
Ca ne marche toujours pas.
J'ai essayé dans tous les sens toutes les suggestions mais
il semblerait qu'access n'aime pas quand on met un "from"
dans une requete de mise a jour. D'ailleur j'ai cherché
désespérement sur le net des syntaxes du update et nulpart
j'ai vu de update avec une clause "from"

Est ce vraiment possible? Si oui est ce que le fait que
moi ca marche pas ca vient de ma vielle version d'access?
(access 97)

merci beaucoup pour l'aide.


-----Message d'origine-----
Bonjour!

Le probleme est probablement avec votre clause WHERE, qui
dans ce cas est

completement inutile: le INNER JOIN ne va ramener que
l'intersection des

deux tables...

Essayez en supprimant la clause WHERE tout simplement.

--
Daniel :-)

Computing Technologies International - www.computing-
tech.com - We

provide solutions...

"gangrel" wrote in
message

news:030401c3adc0$b128c0f0$
bonjour, bonjour,

je ne me fourvoie pas malheureusement.
J'ai testé la requete: d'ailleurs la voici telle quel:

UPDATE visites SET visites.datevisite = [visitesrecopie].
[datevisite], visites.daterelance = [visitesrecopie].
[daterelance], visites.carteentretient = [visitesrecopie].
[carteentretient], visites.vip = [visitesrecopie].[vip],
visites.memovisite = [visitesrecopie].[memovisite],
visites.nuentreprise = [visitesrecopie].[nuentreprise]
FROM visites INNER JOIN visitesrecopie ON [visites].
[nuvisites]=[visitesrecopie].[nuvisites]
WHERE [visites].[nuvisite] IN ( SELECT nuvisite FROM
visitesrecopie);

malheureusement je ne peux meme pas la sauvegarder; access
me met comme message:
syntax error missing operator in query expression.....
et lorsque je clique "ok" le curseur se met vers le FROM
et voila.
Je ne comprends pas; pourtant dans ma tete cette requete
marche mais access a l'air plus difficile que mon cerveau



.



Avatar
3stone
Salut,

"gangrel"
J'ai essayé de lier les tables mais ca ne fait pas avancer
les choses; pour ainsi dire je piétine.

Si tu lie les tables, tu y accède comme si elles étaitent dans ta base actuelle
Ensuite, il te reste à faire une requête "normale"...


Le message
d'erreur est toujours le meme. C'est désespérant.

Un message d'erreur ne vient que si la requête est mal formulée
Lie une table, pour essai et fait ta requête...
Ensuite, revient avec ta requête qui ne fonctionne pas !

et rien n'est désespérant ;-)


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------
Avatar
3stone
Salut,

"gangrel"
il semblerait qu'access n'aime pas quand on met un "from"
dans une requete de mise a jour. D'ailleur j'ai cherché
désespérement sur le net des syntaxes du update et nulpart
j'ai vu de update avec une clause "from"

La requête exacte aiderait sans doute...

Mais, ne pas s'entêteter sur une vision fausse,
même si elle te semble juste... à toi ;-)


Est ce vraiment possible? Si oui est ce que le fait que
moi ca marche pas ca vient de ma vielle version d'access?
(access 97)

Access 97 est une des meilleure, si pas la meilleure au niveau rapidité et stabilité...
et je pense suffisante pour des requêtes de mise à jour.


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------
Avatar
p.fabries
Je ne suis pas un fan des ordres SQL à la sauce MSAccess, mais
aujoud'hui, j'ai des mises à jour à faire, et je me casse les dents
sur le même pb que vous. Une petite recherhe chez Google et je trouve
vos échanges dans le groupe, qui me mettent sur la piste. Après moults
tatônnement, j'ai trouvé la syntaxe qui tue:

UPDATE
TABLE1 INNER JOIN TABLE2 ON TABLE1.CHAMP =TABLE2.CODE
SET TABLE1.CHAMP = TABLE2.LIBELLE;

Chez moi, ça marche nickel, bonne journée.



"gangrel" wrote in message news:<0c8e01c3addb$0a211850$...
ET bien quelle d ception!
Ca ne marche toujours pas.
J'ai essay dans tous les sens toutes les suggestions mais
il semblerait qu'access n'aime pas quand on met un "from"
dans une requete de mise a jour. D'ailleur j'ai cherch
d sesp rement sur le net des syntaxes du update et nulpart
j'ai vu de update avec une clause "from"

Est ce vraiment possible? Si oui est ce que le fait que
moi ca marche pas ca vient de ma vielle version d'access?
(access 97)

merci beaucoup pour l'aide.


-----Message d'origine-----
Bonjour!

Le probleme est probablement avec votre clause WHERE, qui
dans ce cas est

completement inutile: le INNER JOIN ne va ramener que
l'intersection des

deux tables...

Essayez en supprimant la clause WHERE tout simplement.

--
Daniel :-)

Computing Technologies International - www.computing-
tech.com - We

provide solutions...

"gangrel" wrote in
message

news:030401c3adc0$b128c0f0$
bonjour, bonjour,

je ne me fourvoie pas malheureusement.
J'ai test la requete: d'ailleurs la voici telle quel:

UPDATE visites SET visites.datevisite = [visitesrecopie].
[datevisite], visites.daterelance = [visitesrecopie].
[daterelance], visites.carteentretient = [visitesrecopie].
[carteentretient], visites.vip = [visitesrecopie].[vip],
visites.memovisite = [visitesrecopie].[memovisite],
visites.nuentreprise = [visitesrecopie].[nuentreprise]
FROM visites INNER JOIN visitesrecopie ON [visites].
[nuvisites]=[visitesrecopie].[nuvisites]
WHERE [visites].[nuvisite] IN ( SELECT nuvisite FROM
visitesrecopie);

malheureusement je ne peux meme pas la sauvegarder; access
me met comme message:
syntax error missing operator in query expression.....
et lorsque je clique "ok" le curseur se met vers le FROM
et voila.
Je ne comprends pas; pourtant dans ma tete cette requete
marche mais access a l'air plus difficile que mon cerveau



.





Avatar
Daniel Carollo
Bonjour Gangrel!

Oups! Je fais un peu trop de travail sur SQL Serveur en ce moment. Apres
verification, la syntaxe est la suivante:

UPDATE tblEquipes INNER JOIN tblNumber
ON tblEquipes.EquID = tblNumber.Y
SET tblEquipes.Equipe = tblNumber.X

Et ca marche depuis un bon bout de temps, je l'utilisais en 1995 sur Access
2.0.

Bonne continuation.

--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"gangrel" wrote in message
news:0a0401c3addf$a87e7d40$
il semblerait qu'access n'aime pas quand on met un "from"
dans une requete de mise a jour. D'ailleur j'ai cherché
désespérement sur le net des syntaxes du update et nulpart
j'ai vu de update avec une clause "from"

Est ce vraiment possible? Si oui est ce que le fait que
moi ca marche pas ca vient de ma vielle version d'access?
(access 97)

merci beaucoup pour l'aide.