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 :

Requête d'ajout en SQl INSERT INTO avec rajout d'un compteur incrémentiel


Sujet :

VBA Access

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut Requête d'ajout en SQl INSERT INTO avec rajout d'un compteur incrémentiel
    Bonjour,

    Pour mon exemple, j'ai 2 tables T1 et T2.
    Je souhaite importer les données de T2 dans T1 en rajoutant un champ de type "compteur incrémentiel".

    Voici ma requête VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "INSERT INTO T1 (id,nom,val) SELECT compteur,nom,val FROM [T2];"
    Par quoi faut-il remplacer compteur pour obtenir le résultat que j'attends ?

    Merci d'avance pour votre aide
    a+

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    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 637
    Points : 14 611
    Points
    14 611
    Par défaut
    Bonjour,
    il faut créer au préalable un champ de type Numéroauto dans la table de destination (T1).
    Puis dans la requête d'ajout, il est inutile de créer un champ compteur car il s'incrémente automatiquement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "INSERT INTO T1 (nom,val) SELECT nom,val FROM [T2];"
    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 habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    Bonjour,

    Cette solution ne me convient pas, mais c'est de ma faute j'avais oublié de préciser un élément important dans ma question initiale.
    En fait, ma table T2 est liée à un fichier csv, dont le contenu change régulièrement.

    Quand je relance chaque importation, je désire en fait recommencer mon compteur à 1.
    Autrement dit, je souhaite avoir le n° de ligne de la table T2.

    Donc, mon champ T1.id va contenir plusieurs fois 1, 2 ,3... qui correspond donc à chaque fois aux n° des lignes de chaque import.

    merci.
    a+

  4. #4

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    Donc suite à ta proposition j'ai essayé ça : rajouter les n° de lignes dans la table qui me sert de source et qui pour rappel est une table liée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "ALTER TABLE [T2] ADD compteur integer;"
    et en fait il me dit qu'il ne peut pas "exécuter des instructions de données dans des sources de données liées"

    une autre idée ? ou j'ai mal compris ce que tu me conseillais ?

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    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 637
    Points : 14 611
    Points
    14 611
    Par défaut
    Bonsoir,
    En fait, ma table T2 est liée à un fichier csv lié, dont le contenu change régulièrement.
    les données doivent être importées au préalable dans une table interne Access car on ne peut pas modifier la structure d'une table liée, encore moins si c'est un fichier csv.
    Il faut donc:
    1) vider la table interne
    2) réinitialiser le compteur
    3) importer les données
    4) copier dans la table finale
    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 ?

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    Bonjour,

    J'espérais pouvoir éviter cette gymnastique.
    Je suis persuadé qu'il y'a une solution directe...
    D'autant plus que j'arrive à insérer une valeur fixe sans altérer la table source.
    Ici j'insère directement 5 pour chacune des lignes... et je ne touche pas à la table source.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "INSERT INTO [T1] ([id],[nom],[prénom]) SELECT 5,[nom],[prénom] FROM [T2];"
    En fouillant sur les forums, j'ai trouvé cette fonction sql qui permettrait d'ajouter le n° de ligne : row_number() mais malheureusement j'ai l'impression qu'elle n'est pas compatible avec Access.

    Une idée ?
    merci.

Discussions similaires

  1. Requête INSERT INTO avec des champs et des variables
    Par fips1962 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 26/05/2009, 17h51
  2. Problème de requête sql INSERT INTO
    Par momoh dans le forum VB.NET
    Réponses: 2
    Dernier message: 18/02/2009, 16h58
  3. Problème requête sql : INSERT INTO
    Par bobosh dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/08/2008, 10h43
  4. Requête SQL Insert Into
    Par jjg65 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 07/11/2007, 08h35
  5. Pb d'écriture intempestive dans table avec SQL insert into
    Par pete_shifter dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 10/11/2005, 11h51

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