Bonjour piou piou,
merci de ton aide,
oui l'ordre SQL avec jointure comme celui de ta réponse fonctionne.
C'est ce que j'utilise depuis de nombreuses années dans ACCESS à chaque fois que le moteur refuse mes ordres avec sous-requête,
mais cette fois-ci j'aimerais aller jusqu'au bout des choses et comprendre une fois pour toutes ce qui pose problème.
Mordre SQL est tout à fait correct du point de vue SQL pur,
par contre il doit y avoir quelquechose qui pose pbm au niveau de la syntaxe propre à ACCESS.
J'ai encore simplifié mon ordre pour essayer de cerner le pbm :
UPDATE FACTURES SET FACMNTPREC = (select ch1 from TEST);
avec TEST qui est une table à un seul champ (ch1) et un seul enregistrement, mais cet ordre ne fonctionne pas non plus !!!
J'ai aussi essayé
UPDATE FACTURES SET FACMNTPREC = (select Max(ch1) from TEST);
pour qu'il ait la certitude que ma sous-requête ne retourne qu'un seul enregistrement, comme ce doit être le cas dans ce genre d'ordre,
mais ça ne lui plait toujours pas.
Par contre
UPDATE FACTURES SET FACMNTPREC =7;
fonctionne !
ce n'est donc pas une question de table vérouillée, ou de màj interdite,
ce doit être la syntaxe concernant l'emploi de sous-requête qui ne lui convient pas,
c'est pourtant on ne peut plus simple !
De plus son message "L'opération doit utiliser une requête qui peut être mise à jour" n'a pas de sens !
C'est une table qui peut être mise à jour, mais pas une requête !!
En tout cas le message n'est pas approprié puisque la màj peut se faire.
Cette fois ci, je ne lâche pas l'affaire,
l'exemple de la facture et du montant précédent étant un cas inventé pour illustrer mon pbm dans ce post, mais j'ai en réalité des cas plus complexes à solutionner et j'ai vraiment besoin d'utiliser des sous-requêtes dans des ordres UPDATE, comme on peut le faire partout ailleurs (SQLServer, Oracle ...)
Je continue à chercher, sur d'autre sites aussi,
merci d'avance si tu pouvais continuer aussi à m'aider ...
... à TROUVER ! ;-)
A+
Partager