Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pb requete mise a jour

7 réponses
Avatar
Bubu
Bonjour à tous,

J'ai créé une requete mise à jour pour stocker le résultat d'un calcul dans
une table à des fins d'historique. Mais lorsque j'essaie de faire la mise à
jour j'obtiens le message suivant : L'opération doit utiliser une requete qui
peut etre mise a jour. Je ne suis pourtant pas en lecture seule dans ma base.
Pour vous éclairer, voici ma requete :

UPDATE [Stats totales HZ France par mois] INNER JOIN [Histo mensuel HZ
France] ON ([Stats totales HZ France par mois].[ANNEE CLOTURE] = [Histo
mensuel HZ France].[Année clôture exercice]) AND ([Stats totales HZ France
par mois].[MOIS Num] = [Histo mensuel HZ France].Mois) SET [Histo mensuel HZ
France].CA = [Stats totales HZ France par mois]!SommeDeCA;

Avec [Histo mensuel HZ France] : ma table à mettre à jour
et [Stats totales HZ France par mois] : ma requete qui contient le champ
calculé.

Quelqu'un pourrait-il me dire d'où peut venir le problème svp ?

Merci d'avance.

Bubu

7 réponses

Avatar
Raymond [mvp]
Bonjour.

avec tes deux tables et les jointures indiquées, la requête ne peut pas être
mise à jour. le Inner Join devrait comporter une clé univoque. tes critères
relèvent plutôt d'une clause where que d'un Inner Join. A mon avis, une
année de clôture et un mois ne peuvent pas indiquer un enregistrement
unique.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Nouvelle base Access des communes françaises avec
longitude, latitude et 13183 sites internet officiels
http://ardecheearth.free.fr/basededonnees.htm


"Bubu" a écrit dans le message de news:

| Bonjour à tous,
|
| J'ai créé une requete mise à jour pour stocker le résultat d'un calcul
dans
| une table à des fins d'historique. Mais lorsque j'essaie de faire la mise
à
| jour j'obtiens le message suivant : L'opération doit utiliser une requete
qui
| peut etre mise a jour. Je ne suis pourtant pas en lecture seule dans ma
base.
| Pour vous éclairer, voici ma requete :
|
| UPDATE [Stats totales HZ France par mois] INNER JOIN [Histo mensuel HZ
| France] ON ([Stats totales HZ France par mois].[ANNEE CLOTURE] = [Histo
| mensuel HZ France].[Année clôture exercice]) AND ([Stats totales HZ France
| par mois].[MOIS Num] = [Histo mensuel HZ France].Mois) SET [Histo mensuel
HZ
| France].CA = [Stats totales HZ France par mois]!SommeDeCA;
|
| Avec [Histo mensuel HZ France] : ma table à mettre à jour
| et [Stats totales HZ France par mois] : ma requete qui contient le champ
| calculé.
|
| Quelqu'un pourrait-il me dire d'où peut venir le problème svp ?
|
| Merci d'avance.
|
| Bubu
Avatar
Bubu
Bonjour Raymond et merci de t'intéresser à mon cas.
J'ai essayé de tenir compte de tes remarques et ai modifié ma requete et
même ma table à mettre à jour. J'ai d'abord essayé de remplacer mon INNER
JOIN par une clause WHERE mais le résultat était le même. J'ai ensuite
modifié ma table à mettre à jour en créant une clé basée sur les champs mois
et année, car je sais que ça peut surprendre mais dans cette table
historique, un mois et une année de clôture indiquent un enregistrement
unique. Une fois cette modification faite j'ai essayé de relancer la mise à
jour avec ma requete construite sur un innerjoin, puis sur une clause where
mais dans les deux cas j'ai encore eu le même message. Je suis un peu perdu.
Est-ce que l'erreur ne viendrait pas du fait que je veux mettre à jour un
champ d'une table par un champ calculé dans une requete ?
Merci de ton aide
Bubu


Bonjour.

avec tes deux tables et les jointures indiquées, la requête ne peut pas être
mise à jour. le Inner Join devrait comporter une clé univoque. tes critères
relèvent plutôt d'une clause where que d'un Inner Join. A mon avis, une
année de clôture et un mois ne peuvent pas indiquer un enregistrement
unique.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Nouvelle base Access des communes françaises avec
longitude, latitude et 13183 sites internet officiels
http://ardecheearth.free.fr/basededonnees.htm


"Bubu" a écrit dans le message de news:

| Bonjour à tous,
|
| J'ai créé une requete mise à jour pour stocker le résultat d'un calcul
dans
| une table à des fins d'historique. Mais lorsque j'essaie de faire la mise
à
| jour j'obtiens le message suivant : L'opération doit utiliser une requete
qui
| peut etre mise a jour. Je ne suis pourtant pas en lecture seule dans ma
base.
| Pour vous éclairer, voici ma requete :
|
| UPDATE [Stats totales HZ France par mois] INNER JOIN [Histo mensuel HZ
| France] ON ([Stats totales HZ France par mois].[ANNEE CLOTURE] = [Histo
| mensuel HZ France].[Année clôture exercice]) AND ([Stats totales HZ France
| par mois].[MOIS Num] = [Histo mensuel HZ France].Mois) SET [Histo mensuel
HZ
| France].CA = [Stats totales HZ France par mois]!SommeDeCA;
|
| Avec [Histo mensuel HZ France] : ma table à mettre à jour
| et [Stats totales HZ France par mois] : ma requete qui contient le champ
| calculé.
|
| Quelqu'un pourrait-il me dire d'où peut venir le problème svp ?
|
| Merci d'avance.
|
| Bubu





Avatar
Raymond [mvp]
tu dois avoir un problème de clé primaire ou jointure.
j'ai fait un essai sur 2 tables comme ceci et ça fonctionne:
UPDATE table1 INNER JOIN table2 ON (table1.Numero = table2.Numero) AND
(table1.Pays = table2.Pays) SET table2.Lenum = [table1]![Lenum];

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Nouvelle base Access des communes françaises avec
longitude, latitude et 13183 sites internet officiels
http://ardecheearth.free.fr/basededonnees.htm


"Bubu" a écrit dans le message de news:

| Bonjour Raymond et merci de t'intéresser à mon cas.
| J'ai essayé de tenir compte de tes remarques et ai modifié ma requete et
| même ma table à mettre à jour. J'ai d'abord essayé de remplacer mon INNER
| JOIN par une clause WHERE mais le résultat était le même. J'ai ensuite
| modifié ma table à mettre à jour en créant une clé basée sur les champs
mois
| et année, car je sais que ça peut surprendre mais dans cette table
| historique, un mois et une année de clôture indiquent un enregistrement
| unique. Une fois cette modification faite j'ai essayé de relancer la mise
à
| jour avec ma requete construite sur un innerjoin, puis sur une clause
where
| mais dans les deux cas j'ai encore eu le même message. Je suis un peu
perdu.
| Est-ce que l'erreur ne viendrait pas du fait que je veux mettre à jour un
| champ d'une table par un champ calculé dans une requete ?
| Merci de ton aide
| Bubu
Avatar
Raymond [mvp]
.../...

qu'appelles-tu un champ calculé ?
[Stats totales HZ France par mois] est une table ou une requête ?

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Nouvelle base Access des communes françaises avec
longitude, latitude et 13183 sites internet officiels
http://ardecheearth.free.fr/basededonnees.htm
Avatar
Bubu
En fait [Stats totales HZ France par mois] est une requête qui contient un
champ calculé (SommeDeCA). Et je souhaite utiliser ce SommeDeCA pour mettre à
jour mon champ CA de la table [Histo mensuel HZ France]. Suis-je clair ?


..../...

qu'appelles-tu un champ calculé ?
[Stats totales HZ France par mois] est une table ou une requête ?

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Nouvelle base Access des communes françaises avec
longitude, latitude et 13183 sites internet officiels
http://ardecheearth.free.fr/basededonnees.htm





Avatar
Raymond [mvp]
la requête est une requête de regroupement ? ( à voir le nom de SommeDeCA),
ce qui empêche toute mise à jour.
il faut passer par une table intermédiaire.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Nouvelle base Access des communes françaises avec
longitude, latitude et 13183 sites internet officiels
http://ardecheearth.free.fr/basededonnees.htm


"Bubu" a écrit dans le message de news:

| En fait [Stats totales HZ France par mois] est une requête qui contient un
| champ calculé (SommeDeCA). Et je souhaite utiliser ce SommeDeCA pour
mettre à
| jour mon champ CA de la table [Histo mensuel HZ France]. Suis-je clair ?
|
Avatar
Bubu

la requête est une requête de regroupement ? ( à voir le nom de SommeDeCA),
ce qui empêche toute mise à jour.
il faut passer par une table intermédiaire.


C'est un peu ce que je craignais. Ca n'est pas très pratique mais je vais
faire avec. Merci pour ton aide.
Bubu