Bonjour à tous
Comme vous le savez sans doute le moteur d'access ne permet pas d'imbriquer une requête "select" après le "=" de la clause "Set" du'une requête de mise à jour ("Update").
Voici ma requête en version complexe:
et en version compréhensible (regardez bien les parenthèses car la sous requête "SELECT" fini après la clause "HAVING"):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 UPDATE Tb_Irrigation SET Tb_Irrigation.Irrig_Surface = (SELECT Sum(Tb_Parcelles.Par_Surface) AS SommeDePar_Surface FROM Tb_Irrigation INNER JOIN Tb_Parcelles ON Tb_Irrigation.Irrig_Parcelles.Value = Tb_Parcelles.Par_Num GROUP BY Tb_Irrigation.Irrig_ID HAVING (((Tb_Irrigation.Irrig_ID)=[Formulaires]![F04_Irrigation]![SF04_Surfaces irriguées].[Form]![txt_Irrig_ID]))) WHERE (((Tb_Irrigation.Irrig_ID)=[Formulaires]![F04_Irrigation]![SF04_Surfaces irriguées].[Form]![txt_Irrig_ID]));
Il semble d'après ce que j'ai lu autre part sur le site qu'il faut d'abord exprimer les jointures mais je n'arrive pas à adapter ma requête pour Access. Il semblerait pourtant que ma requête puisse fonctionner avec MySQL par exemple( j'ai malgré tout un doute sur la nécessité d'exprimé 2 fois le même critère (Cf la clause "Having" de la sous requête et la clause "Where" de la requête générale)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 UPDATE Table1 SET Table1.champ2 = (SELECT Sum(Table2.champ2) FROM Table2 INNER JOIN Table1 ON Table1.champ3 = Table2.champ3 GROUP BY Table1.champ1 HAVING ((Table1.champ1)=[Formulaires]![txt_Table1champ1]))) WHERE ((Table1.champ1)=[Formulaires]![txt_Table1champ1]);
Partager