Je veux faire quelque chose qui me semble classique : mettre à jour un champ dans une table en cumulant les valeurs d'un champ d'une table liée
J'utilise Access 2003, mais j'ai vu plusieurs messages sur le même problème concernant d'autres bases de données.
Soit une table A avec pour champs Clef et Total
et une table B avec pour champs Clef, Clef_A et Valeur
la jointure se faisant entre A.Clef et B.Clef_A
Access me génère la requête suivante (qui me parait pas mal):
mais me donne le message d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part UPDATE a INNER JOIN b ON a.Clef = b.Clef_A SET a.Total = Sum([Valeur]);
Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée 'Total' comme une partie de la fonction d'agrégat
Sur les forums on trouve des conseils du genre :
Qui ne donnent pas de satisfaction (sur les forums)
Code : Sélectionner tout - Visualiser dans une fenêtre à part UPDATE a SET a.Total = (select sum(b.Valeur) from b where a.Clef = b.Clef_A);
et me donnent l'erreur :
L'opération doit utiliser une requête qui peut être mise à jour
Même message en créant une requête de sélection dont on se sert dans la requête de mise à jour (traduction en 2 requêtes de la précédente)
La seule solution semble être de passer par une table intermédiaire, ce que j'aimerai éviter.
J'ai beau relire les messages d'erreurs je ne vois pas ce qu'ils signifient et d'où vient le problème.
Encore une fois ça ne me parait pas extraordinaire comme fonctionnalité, il doit bien y avoir un moyen prévu en SQL
Partager