Bonjour,
Pour faire court, je stocke dans une table INPUT_CRITERES des objet "patrimoine" possedant un nombre fixe de critères (en colonne) et une valeur associée, valeur que je cherche à insérer dans TV_PATRIMOINE_ANNEE ou les criteres ne sont plus répertoriés en colonne, mais dans des tuples.
J'utilise dans ce cas dans mon code VBA une requête d'UPDATE (où se trouve un DECODE servant à convertir le "type de critère" stocké dans un tuple en nom de colonne),
J'obtient l'erreur suivante : "L'opération doit utiliser une requête qui peut être mise à jour".
En fouillant un peu sur internet, j'ai constaté que c'est généralement ce qui se passe après le SET qui fait tout foirer, mais je ne vois pas d'alternative à ça :
UPDATE TV_PATRIMOINE_ANNEE AS pat1 SET VAL_CRIT = (SELECT DECODE(SELECT CRITERE FROM TV_PATRIMOINE_ANNEE AS pat2 WHERE pat1.PATRIMOINE = pat2.PATRIMOINE and pat1.ANNEE = pat2.ANNEE and pat1.CRITERE = pat2.CRITERE) FROM INPUT_CRITERES WHERE ID_EXPLOITANT = (SELECT CODE_EXPLOITANT FROM TP_PATRIMOINE WHERE pat1.PATRIMOINE = ID_PATRIMOINE))
A la base, j'avais un code VBA qui parcourait la table TV_PATRIMOINE_ANNEE dans un recordSet, puis qui récupérait la bonne valeur dans INPUT_CRITERE, mais c'est une solution à laquelle je n'aimerais pas retourner car... long, (jeu de données de 60000+ produisant une table de avec 10x plus de lignes environ...), sauf si vous pouvez me certifier que je n'aurais pas d'amélioration avec mon unique requête.
(Pour précision, je travaille en parallèle à la "normalisation" des tables, parce que là c'est vraiment le foutoir, j'en convient parfaitement, je vous serez reconnaissant de faire fi de ces infâmités )
Merci d'avance pour l'aide, n'hésitez à me demander plus d'explications si je ne suis pas clair...
Partager