Requête Mise à jour UPDATE
Le
Dominique
Bonjour,
J'ai une table "AMD" avec entre autres 2 champs "RefOpe"
et "DernierStatut".
j'ai une requête sélection "Rq_DernierStatut" qui
m'affiche 2 champs "RefOpe" et "StatutConf".
Je veux mettre à jour le champ DernierStatut de la table
AMD par la requête Ajout suivante :
UPDATE AMD INNER JOIN Rq_DernierStatut ON AMD.RefOpe =
Rq_DernierStatut.RefOpe SET AMD.DernierStatut =
[Rq_DernierStatut].[StatutConf];
Lorsque j'exécute la requête j'ai l'erreur "L'opération
doit utiliser une requête qui peut être mise à jour".
Par contre si à la place de la requête j'ai une
table "Tbl_DernierStatut" contenant les mêmes informations
que la dite requête, la requête mise à jour suivante
fonctionne très bien :
UPDATE AMD INNER JOIN Tbl_DernierStatut ON AMD.RefOpe =
Tbl_DernierStatut.RefOpe SET AMD.DernierStatut =
[Tbl_DernierStatut] .[Statutconf];
Pourquoi ?
Merci de votre aide
Dominique
J'ai une table "AMD" avec entre autres 2 champs "RefOpe"
et "DernierStatut".
j'ai une requête sélection "Rq_DernierStatut" qui
m'affiche 2 champs "RefOpe" et "StatutConf".
Je veux mettre à jour le champ DernierStatut de la table
AMD par la requête Ajout suivante :
UPDATE AMD INNER JOIN Rq_DernierStatut ON AMD.RefOpe =
Rq_DernierStatut.RefOpe SET AMD.DernierStatut =
[Rq_DernierStatut].[StatutConf];
Lorsque j'exécute la requête j'ai l'erreur "L'opération
doit utiliser une requête qui peut être mise à jour".
Par contre si à la place de la requête j'ai une
table "Tbl_DernierStatut" contenant les mêmes informations
que la dite requête, la requête mise à jour suivante
fonctionne très bien :
UPDATE AMD INNER JOIN Tbl_DernierStatut ON AMD.RefOpe =
Tbl_DernierStatut.RefOpe SET AMD.DernierStatut =
[Tbl_DernierStatut] .[Statutconf];
Pourquoi ?
Merci de votre aide
Dominique

Poser une question


Jet marque comme ne pouvant plus être mis-à-jour une requête ayant
un aggrégat (MAX, MIN, AVG, SUM, COUNT, ... ) soit directement, soit
indirectement (via un join sur une requête ayant un aggrégat). Lorsqu'on
utilise une table réelle, la table ne fait plus référence à l'aggrégat et la
requête ne vois pas sa mise-à-jour ainsi compremise.
Microsoft POURRAIT modifier cet état de choses, c'est faisable.
Microsoft a simplement de besoin d'un signal en ce sens, de "plusieurs"
utilisateur d'Access (JET). On sait où est la boîte à suggestion, sur le
site de Microsoft? c'est là qu'il faut "suggérer" qu'on désire la
possibilité de pouvoir mettre à jour une table avec une valeur aggrégée
provenant d'une autre table, sous JET SQL (c'est déjà faisable avec MS SQL
Server).
Espérant être utile,
Vanderghast, Access MVP
"Dominique" news:19e9b01c44dfd$9a59d660$
Bonjour,
J'ai une table "AMD" avec entre autres 2 champs "RefOpe"
et "DernierStatut".
j'ai une requête sélection "Rq_DernierStatut" qui
m'affiche 2 champs "RefOpe" et "StatutConf".
Je veux mettre à jour le champ DernierStatut de la table
AMD par la requête Ajout suivante :
UPDATE AMD INNER JOIN Rq_DernierStatut ON AMD.RefOpe Rq_DernierStatut.RefOpe SET AMD.DernierStatut [Rq_DernierStatut].[StatutConf];
Lorsque j'exécute la requête j'ai l'erreur "L'opération
doit utiliser une requête qui peut être mise à jour".
Par contre si à la place de la requête j'ai une
table "Tbl_DernierStatut" contenant les mêmes informations
que la dite requête, la requête mise à jour suivante
fonctionne très bien :
UPDATE AMD INNER JOIN Tbl_DernierStatut ON AMD.RefOpe Tbl_DernierStatut.RefOpe SET AMD.DernierStatut [Tbl_DernierStatut] .[Statutconf];
Pourquoi ?
Merci de votre aide
Dominique
news::
Bonjour/Bonsoir Michel,
je rebondis sur la question.
J'ai 2 tables pour simplifier:
Une table tclient avec entre autres un champs NumClient et un champs
CumulAchat (monétaire)
Une table tFacture avec entre autres un champs NumFacture, NumClient,
MontantHT.
Je veux mettre à jour le CumulAchat de la table Client par une requête de
mise à jour.(CumulAchat=somme des MontantHT des différentes factures d'un
client donné)
Quel sql me proposes-tu ? car tous les cas de figure que j'ai testés me
retourne :
soit le message "L'opération
doit utiliser une requête qui peut être mise à jour".
soit "Inconnu" !!! quand j'utilise un DSum(...) pour la MAJ
Merci
Eric
C'est bon Michel, j'ai trouvé :
UPDATE tClient SET tClient.CumulHT = DSum
("[Montantht]","tfacture","tfacture.NumClient=" & tclient.NumClient);
suffisait mais j'avais mal placé les " car j'encadrai le champ
tclient.numclient.
Merci
Merci pour tes explications claires.
Dominique