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

VBA Access Discussion :

Mettre à jour toutes les lignes d'un champ avec le champ d'une autre table


Sujet :

VBA Access

  1. #1
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut Mettre à jour toutes les lignes d'un champ avec le champ d'une autre table
    Bonjour à tous,
    J'espère que le titre se suffit à lui même

    Je m'explique.
    Je voudrais mettre à jour un champ d'une table avec un champ d'une autre table

    J'ai un premier code qui fonctionne très bien et qui m'invite à saisir la donnée pour mettre à jour le champ F9 de la table temp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Saisie d'une clé ou date du document dans deux champs des 2 tables TEMP body et TEMP header avec la date - Mise à jour des champs
    DoCmd.RunSQL "UPDATE TEMP_TABLE_IMPORT_1WAH_Invoice_Body SET [F9]= [Fill the Invoice Month: YYYY_MM]"
    Et je m'en suis inspiré, pour mettre à jour un autre champ de cette table TEMP mais pour le champ F10 à l'aide d'une data qui se trouve dans la ligne de la table TEMP_TABLE_IMPORT_1WAH_Invoice_Period
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Test mise à jour avec table TEMP pour update période
    DoCmd.RunSQL "UPDATE TEMP_TABLE_IMPORT_1WAH_Invoice_Body SET [F10]= TEMP_TABLE_IMPORT_1WAH_Invoice_Period.F1"
    J'ai essayé plusieurs syntaxes mais rien n'y fait, à chaque fois il ouvre un message de saisie... entrer une valeur de paramètre

    Ma question est simple, enfin je pense... : est ce que la méthode est bonne, à savoir mettre à jour un champ avec le contenu d'une autre table à l'aide de ce type de code.

    En vous remerciant !

    Totor

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    la méthode la plus conforme à la norme SQL serait la sous-requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "UPDATE TEMP_TABLE_IMPORT_1WAH_Invoice_Body SET [F10]= (select F1 from TEMP_TABLE_IMPORT_1WAH_Invoice_Period);"
    pour autant, si il n'y a qu'une seule valeur dans plusieurs enregistrements, il vaut mieux utiliser DISTINCT ou TOP 1 pour éviter un message d'erreur (la sous-requête renvoie plus d'un enregistrement):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "UPDATE TEMP_TABLE_IMPORT_1WAH_Invoice_Body SET [F10]= (select DISTINCT [F1] from TEMP_TABLE_IMPORT_1WAH_Invoice_Period);"
    sinon sur Access il y a les fonctions de domaine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "UPDATE TEMP_TABLE_IMPORT_1WAH_Invoice_Body SET [F10]= DFIRST('[F1]','TEMP_TABLE_IMPORT_1WAH_Invoice_Period');"
    Ces exemples sont pour le cas où tous les enregistrements sont à mettre à jour, s'il faut appliquer des filtres, il faut utiliser la condition WHERE
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Super !!!!

    Merci !!!
    ça fonctionne
    Un grand merci Tee

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    si tu considères que le sujet est résolu, n'oublie pas le clic sur le bouton
    Merci
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/09/2019, 16h55
  2. Mettre à jour toutes les lignes d'une table
    Par huzard dans le forum MySQL
    Réponses: 6
    Dernier message: 25/02/2015, 19h05
  3. Réponses: 2
    Dernier message: 10/03/2010, 11h50
  4. Réponses: 4
    Dernier message: 14/02/2008, 09h06
  5. Réponses: 7
    Dernier message: 30/01/2008, 17h39

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