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 :

export d'une table vers une autre base de données [AC-2003]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 120
    Par défaut export d'une table vers une autre base de données
    Bonjour,
    Je n'arrive pas à écrire le code VBA en remplacement de la requête suivante qui permet de copier une partie d'une table de la base1 dans une table de même nom dans la base2 (selon un critère de choix).

    le sql de ma requête est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO NOMTABLE (CHAMP1, CHAMP2, CHAMP3) 
    IN 'D:\CheminBaseDeDonnees2\NomBase2.mdb'
    SELECT CHAMP1, CHAMP2, CHAMP3
    FROM NOMTABLE
    WHERE Left([CHAMP1],2) In (select CHAMP_X from NOMTABLEX WHERE CHAMP_Y="ZZZZZ");
    Je ne peux pas laisser la requête et faire DoCmd.OpenQuery car la valeur "XXX" dépend d'un curseur "i" dans une boucle...

    J'aimerais avoir au final qqchose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    For i=1 to 10
     'création de la base "i" par copie d'une base initiale "STRUCTURE"
      FileCopy "BaseOriginale", "BaseFinale_" & i 
     'ajout des données de la table NOMTABLE (base "STRUCTURE") dont le champ CHAMP1 est une valeur dans une liste variable selon la base COPIE dans la table NOMTABLE (base COPIE i) 
      ReqSQL1 = "INSERT INTO NOMTABLE (CHAMP1, CHAMP2, CHAMP3) IN 'CheminBase\BaseFinale_i.mdb' " & _
                "SELECT CHAMP1, CHAMP2, CHAMP3 FROM NOMTABLE " & _
                "WHERE Left([CHAMP1],2) IN (SELECT DISTINCT CHAMP_X FROM NOMTABLEX WHERE CHAMP_Y="""ZZZ""");"
      Set rs = CurrentDb.OpenRecordset(ReqSQL)
    Next i
    Merci beaucoup pour votre aide.
    MarieO

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 120
    Par défaut
    Bonjour tout le monde,

    Je me permets de relancer ce sujet car je suis toujours bloquée et je n'ai malheureusement pas trouvé de solution pour mon pb.
    Merci beaucoup,
    MarieO

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Par défaut
    Bonjour
    Et avec une syntaxe comme celle là ? (i est en variable)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       ReqSQL1 = "INSERT INTO NOMTABLE (CHAMP1, CHAMP2, CHAMP3) IN 'CheminBase\BaseFinale_" & i & ".mdb' " & _
                "SELECT CHAMP1, CHAMP2, CHAMP3 FROM NOMTABLE " & _
                "WHERE Left([CHAMP1],2) IN (SELECT DISTINCT CHAMP_X FROM NOMTABLEX WHERE CHAMP_Y="""ZZZ""");"

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 120
    Par défaut
    j'ai fait l'essai, cela ne fonctionne pas non plus.
    Le pb a plutôt l'air de venir de la façon dont le chemin d'accès à la base "externe" est écrit...

  5. #5
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    En effet, cheminbase n'est pas un chemin valide. Un chemin valide c'est

    Disque:\[repertoire\]Fichier.extension

    Exemple

    c:\test\test.accdb

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Par défaut
    Re
    Puisque tu es en 2003 et si tu es sûre que la copie est dans le même répertoire que la source, tu peux utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReqSQL1 = "INSERT INTO NOMTABLE (CHAMP1, CHAMP2, CHAMP3) IN '" & CurrentProject.Path & "\BaseFinale_" & i & ".mdb' " & _

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

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. [VB.Net] Comment copier une DataRow d'une table vers une autre ?
    Par YLF dans le forum Accès aux données
    Réponses: 7
    Dernier message: 05/09/2012, 23h23
  3. Réponses: 1
    Dernier message: 19/10/2011, 12h13
  4. Copier les enregistrements d'une table vers une table d'une autre DB
    Par karinette21 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/11/2008, 21h50
  5. [VB.NET] Copie d'une table d'une DB vers une autre
    Par SergeF dans le forum Windows Forms
    Réponses: 9
    Dernier message: 20/11/2004, 09h54

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