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 :

Mise à jour d'une colonne par une autre colonne [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 81
    Points : 58
    Points
    58
    Par défaut Mise à jour d'une colonne par une autre colonne
    Bonjour,
    J'ai un problème concernant la mise à jour d'une colonne c1 d'une table t1, par les valeurs d'une colonne c2 d'une table t2.
    Je sais que pour réaliser cette opération, il faut utiliser "UPDATE", et j'ai donc essayé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL ("UPDATE table1 SET table1.colonne1 = SELECT( colonne2 FROM table2 );")
    Mon compilateur me dit qu'il y a une erreur de syntaxe dans le SELECT, mais je ne vois absolument pas où...

    Bien entendu, j'ai aussi essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL ("UPDATE table1 SET table1.colonne1 = SELECT( table2.colonne2 FROM table2 );")
    même résultat...

    Si j'essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL ("UPDATE table1 SET table1.colonne1 = table2.colonne2 ;")
    Il n'y a pas d'erreur, mais lors de l'execution, il m demande de taper un paramètre, avec comme message "table2.colonne2", ce qui évidemment je ne souhaite pas...

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 387
    Points : 19 811
    Points
    19 811
    Billets dans le blog
    66
    Par défaut
    Salut,

    Il faut déjà faire un lien entre table1 et table2

    A+

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 81
    Points : 58
    Points
    58
    Par défaut
    J'ai déjà essayé en mettant un lien, meme erreur au final, du coup je l'ai enlevé pour pas compliquer mon code...

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 387
    Points : 19 811
    Points
    19 811
    Billets dans le blog
    66
    Par défaut
    le problème c'est qu'access ne va pas comprendre :

    Tu ne peux pas lui dire :

    "Mets à jour la colonne1 de la table1 avec la colonne2 de la table2"

    Les mise à jour sql se font ligne par ligne, il vaut mieux parler de champ1 de la table1 et champ2 de la table2 :

    Et justement pour mettre à jour ligne par ligne il faut 1 champ de liaison:

    Tu ne peux pas non plus lui dire :

    "Mets à jour le champ1 de la 1er ligne de la table1 avec le champ2 de la 1er ligne de la table2"
    Puis
    "Mets à jour le champ1 de la 2eme ligne de la table1 avec le champ2 de la 2eme ligne de la table2"

    etc...

    sans avoir recours à 1 champ de liaison


    Une solution serait d'ouvrir 2 recordset en DAO:

    1 pour la table1 et 1 pour la table2,

    puis de parcourir simultanément les 2 tables en mettant à jour ligne par ligne le champ1 de la table2 avec le champ2 de la table2...

  5. #5
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 81
    Points : 58
    Points
    58
    Par défaut
    En fait, je me compliquais trop la vie hier, c'était la fin de journée, j'étais fatigué J'ai juste fait un doublon de ma table en rajoutant la colonne voulue, ça me prend une ligne, lol, je ne sais même pas comment j'ai fait pour ne pas le voir ^^ merci encore pour avoir pris du temps sur mon problème !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Récupérer valeurs d'une colonne vers une liste déroulante sur autre colonne d'une nouvelle feuille
    Par redhotchilipeppers dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/07/2014, 17h26
  2. Réponses: 0
    Dernier message: 08/04/2010, 12h58
  3. Réponses: 2
    Dernier message: 18/06/2009, 15h09
  4. Réponses: 4
    Dernier message: 31/10/2007, 20h27
  5. [VBA-E]Mise à jour de cellule alimentée par une liste
    Par moritan dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/01/2007, 06h11

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