IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Problème lors d'un "UPDATE" sur une table


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Problème lors d'un "UPDATE" sur une table
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    Ta requête est légèrement complexe :-).

    Je suggère que tu testes chaque morceau séparément. C-à-d :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CRITERE FROM TV_PATRIMOINE_ANNEE AS pat2 WHERE pat1.PATRIMOINE = pat2.PATRIMOINE and pat1.ANNEE = pat2.ANNEE and pat1.CRITERE = pat2.CRITERE

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CODE_EXPLOITANT FROM TP_PATRIMOINE WHERE pat1.PATRIMOINE = ID_PATRIMOINE

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    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 = "Mettre ici une valeur fixe valide"

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE TV_PATRIMOINE_ANNEE AS pat1 SET VAL_CRIT="Mettre ici une valeur fixe valide"

    Une fois que tu es sur que tes morceaux fonctionnent reconstitue progressivement ta super requête d'UPDATE.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. Problème de compatibilité entre IE et FF sur une table
    Par ben_ghost dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 31/08/2009, 12h17
  2. journalisation des updates, inserts sur une table
    Par philou28 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/04/2007, 16h07
  3. [HQL] Update HQL sur une table avec Id composite
    Par Eccoon dans le forum Hibernate
    Réponses: 5
    Dernier message: 02/04/2007, 12h10
  4. Réponses: 2
    Dernier message: 30/03/2007, 13h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo