OVH Cloud OVH Cloud

message d'erreur

3 réponses
Avatar
éric
bonjour,

Lorsque je tente d'ex=E9cuter une requete de mise =E0 jour du=20
type une sous-requete met =E0 jour certains champs d'une=20
table, j'ai le message suivant "L'op=E9ration doit utiliser=20
une requete qui peut =EAtre mise =E0 jour" ??

Visiblement d'apr=E8s l'aide access, cela proviendrait de=20
ma relation entre cette sous-requete et la table, une=20
relation de 1 =E0 1 sachant que cette sous-requete ne=20
comporte =E0 chaque fois qu'un seul enregistrement. Comment=20
puis-je m'en sortir ??

L'un d'entre vous aurait-il d=E9j=E0 rencontr=E9 ce pb ??
=E9ric

3 réponses

Avatar
Michel Walsh
Salut,


Je ne comprends pas le concept d'une sous-requête mettant à jour des
enregistrements. Probablement une question de terminologie. Est-ce qu'on
peut avoir un exemple, même esquissé, de l'énoncé SQL?

Une sous-requête ne peut être qu'un énoncé SELECT, ne peut pas être un
UPDATE.


Espérant être utile,
Vanderghast, Access MVP


"éric" wrote in message
news:160901c49b2b$b81f3b10$
bonjour,

Lorsque je tente d'exécuter une requete de mise à jour du
type une sous-requete met à jour certains champs d'une
table, j'ai le message suivant "L'opération doit utiliser
une requete qui peut être mise à jour" ??

Visiblement d'après l'aide access, cela proviendrait de
ma relation entre cette sous-requete et la table, une
relation de 1 à 1 sachant que cette sous-requete ne
comporte à chaque fois qu'un seul enregistrement. Comment
puis-je m'en sortir ??

L'un d'entre vous aurait-il déjà rencontré ce pb ??
éric
Avatar
éric
bonjour,

en fait j'ai d'abord une requête de sélection (SELECT)
que j'intègre ensuite à une requête de mise à jour
(UPDATE), c'est la première requête (SELECT) que j'ai
appelé sous-requête. Et c'est en lançant la requête de
mise à jour (qui intégre donc la sous-requête) que j'ai
le message d'erreur suivant "L'opération doit utiliser
une requete qui peut être mise à jour".

le code de la sous-requëte appelée ° ALTItoEP inForm est
le suivant:
SELECT LIMITE.NUM_OP, Max(IIf([ALTI]![ALTI_SOL]<>0 And
[ALTI]![ALTI_VES]<>0,[ALTI]![ALTI_SOL]-[ALTI]!
[ALTI_VES],999)) AS STER_EPMAX, Min(IIf([ALTI]![ALTI_SOL]
<>0 And [ALTI]![ALTI_VES]<>0,[ALTI]![ALTI_SOL]-[ALTI]!
[ALTI_VES],999)) AS STER_EPMIN, Max(IIf([ALTI]![ALTI_VES]
<>0 And [ALTI]![ALTI_SUB]<>0,[ALTI]![ALTI_VES]-[ALTI]!
[ALTI_SUB],999)) AS ARCHEO_EPMAX, Min(IIf([ALTI]!
[ALTI_VES]<>0 And [ALTI]![ALTI_SUB]<>0,[ALTI]![ALTI_VES]-
[ALTI]![ALTI_SUB],999)) AS ARCHEO_EPMIN
FROM OPERATION INNER JOIN (LIMITE INNER JOIN ALTI ON
LIMITE.NUM_LIM = ALTI.NUM_LIM) ON OPERATION.NUM_OP =
LIMITE.NUM_OP
GROUP BY LIMITE.NUM_OP
HAVING (((LIMITE.NUM_OP)=[forms]![LIM+SOND]![NUM_OP]));

le code de la requête de mise à jour qui intègre donc la
sous-requête de sélection:
UPDATE [° ALTItoEP inForm] INNER JOIN EPAISSEUR ON [°
ALTItoEP inForm].NUM_OP = EPAISSEUR.NUM_OP SET
EPAISSEUR.STER_EPMAX = [° ALTItoEP inForm]![STER_EPMAX],
EPAISSEUR.STER_EPMIN = [° ALTItoEP inForm]![STER_EPMIN],
EPAISSEUR.ARCHEO_EPMAX = [° ALTItoEP inForm]!
[ARCHEO_EPMAX], EPAISSEUR.ARCHEO_EPMIN = [° ALTItoEP
inForm]![ARCHEO_EPMIN]
WHERE (((EPAISSEUR.NUM_OP)=[forms]![LIM+SOND]![NUM_OP]));

voilà, en espérant avoir été plus clair.
merci
éric

-----Message d'origine-----
Salut,


Je ne comprends pas le concept d'une sous-requête
mettant à jour des

enregistrements. Probablement une question de
terminologie. Est-ce qu'on

peut avoir un exemple, même esquissé, de l'énoncé SQL?

Une sous-requête ne peut être qu'un énoncé SELECT,
ne peut pas être un

UPDATE.


Espérant être utile,
Vanderghast, Access MVP


"éric" wrote in message
news:160901c49b2b$b81f3b10$
bonjour,

Lorsque je tente d'exécuter une requete de mise à jour du
type une sous-requete met à jour certains champs d'une
table, j'ai le message suivant "L'opération doit utiliser
une requete qui peut être mise à jour" ??

Visiblement d'après l'aide access, cela proviendrait de
ma relation entre cette sous-requete et la table, une
relation de 1 à 1 sachant que cette sous-requete ne
comporte à chaque fois qu'un seul enregistrement. Comment
puis-je m'en sortir ??

L'un d'entre vous aurait-il déjà rencontré ce pb ??
éric


.



Avatar
Michel Walsh
Salut,


Si la requête utilise un aggrégat (tel que MAX), un GROUP BY, un
DISTINCT ou un UNION, elle est marqué comme impossible de mettre à jour.
Faire une table (temporaire) à partir de la requête utilisant l'aggrégat,
puis metter à jour en utilisant la dite table temporaire.


Espérant être utile,
Vanderghast, Access MVP


"éric" wrote in message
news:33ae01c49bca$eb1c8370$
bonjour,

en fait j'ai d'abord une requête de sélection (SELECT)
que j'intègre ensuite à une requête de mise à jour
(UPDATE), c'est la première requête (SELECT) que j'ai
appelé sous-requête. Et c'est en lançant la requête de
mise à jour (qui intégre donc la sous-requête) que j'ai
le message d'erreur suivant "L'opération doit utiliser
une requete qui peut être mise à jour".

le code de la sous-requëte appelée ° ALTItoEP inForm est
le suivant:
SELECT LIMITE.NUM_OP, Max(IIf([ALTI]![ALTI_SOL]<>0 And
[ALTI]![ALTI_VES]<>0,[ALTI]![ALTI_SOL]-[ALTI]!
[ALTI_VES],999)) AS STER_EPMAX, Min(IIf([ALTI]![ALTI_SOL]
<>0 And [ALTI]![ALTI_VES]<>0,[ALTI]![ALTI_SOL]-[ALTI]!
[ALTI_VES],999)) AS STER_EPMIN, Max(IIf([ALTI]![ALTI_VES]
<>0 And [ALTI]![ALTI_SUB]<>0,[ALTI]![ALTI_VES]-[ALTI]!
[ALTI_SUB],999)) AS ARCHEO_EPMAX, Min(IIf([ALTI]!
[ALTI_VES]<>0 And [ALTI]![ALTI_SUB]<>0,[ALTI]![ALTI_VES]-
[ALTI]![ALTI_SUB],999)) AS ARCHEO_EPMIN
FROM OPERATION INNER JOIN (LIMITE INNER JOIN ALTI ON
LIMITE.NUM_LIM = ALTI.NUM_LIM) ON OPERATION.NUM_OP LIMITE.NUM_OP
GROUP BY LIMITE.NUM_OP
HAVING (((LIMITE.NUM_OP)=[forms]![LIM+SOND]![NUM_OP]));

le code de la requête de mise à jour qui intègre donc la
sous-requête de sélection:
UPDATE [° ALTItoEP inForm] INNER JOIN EPAISSEUR ON [°
ALTItoEP inForm].NUM_OP = EPAISSEUR.NUM_OP SET
EPAISSEUR.STER_EPMAX = [° ALTItoEP inForm]![STER_EPMAX],
EPAISSEUR.STER_EPMIN = [° ALTItoEP inForm]![STER_EPMIN],
EPAISSEUR.ARCHEO_EPMAX = [° ALTItoEP inForm]!
[ARCHEO_EPMAX], EPAISSEUR.ARCHEO_EPMIN = [° ALTItoEP
inForm]![ARCHEO_EPMIN]
WHERE (((EPAISSEUR.NUM_OP)=[forms]![LIM+SOND]![NUM_OP]));

voilà, en espérant avoir été plus clair.
merci
éric

-----Message d'origine-----
Salut,


Je ne comprends pas le concept d'une sous-requête
mettant à jour des

enregistrements. Probablement une question de
terminologie. Est-ce qu'on

peut avoir un exemple, même esquissé, de l'énoncé SQL?

Une sous-requête ne peut être qu'un énoncé SELECT,
ne peut pas être un

UPDATE.


Espérant être utile,
Vanderghast, Access MVP


"éric" wrote in message
news:160901c49b2b$b81f3b10$
bonjour,

Lorsque je tente d'exécuter une requete de mise à jour du
type une sous-requete met à jour certains champs d'une
table, j'ai le message suivant "L'opération doit utiliser
une requete qui peut être mise à jour" ??

Visiblement d'après l'aide access, cela proviendrait de
ma relation entre cette sous-requete et la table, une
relation de 1 à 1 sachant que cette sous-requete ne
comporte à chaque fois qu'un seul enregistrement. Comment
puis-je m'en sortir ??

L'un d'entre vous aurait-il déjà rencontré ce pb ??
éric


.