GNT sans publicité, site mobile, fonctionnalitées exclusives...

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
Lire les 4 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel Walsh
Le #5315371
Salut,


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
Eric
Le #5315141
"Michel Walsh" écrivait
news::

Salut,


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


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

Eric
Le #5315101
Eric 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

dOMINIQUE
Le #5315031
Bonjour,

Merci pour tes explications claires.
Dominique
-----Message d'origine-----
Salut,


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" in message

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


.



Publicité
Suivre les réponses
Poster une réponse
Anonyme