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 :

code fusion de bases de données


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 24
    Points : 11
    Points
    11
    Par défaut code fusion de bases de données
    Bonjour,

    J'ai crée une base de données contenant plusieurs tables liées. Cette base va être utilisée par plusieurs utilisateurs distants. Je n'ai pas la possibilité de travailler en réseau, et il faudrait que je récupère le tout dans une base centralisatrice (toujours les mêmes 3 tables liées). Je souhaite savoir comment procéder pour fusionner toutes les bases en une seule (si j'avais 1 seule table, je pourrais m'en sortir par copier / coller, mais avec plusieurs liées, ça ne passe pas...
    J'ai trouvé ce code en réponse à une question similaire, le problème c'est que je ne connais pas VBA. Quelqu'un pourrait m'aider à comprendre comment l'adapter à ma base ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Sub transfert()
    Const chreq = "INSERT INTO rw101 SELECT * FROM (SELECT * FROM rw101 IN 'C:\chemincomplet\xx.mdb');"
    Dim machaine As String
    Dim mabase As DAO.Database
    Dim matable As TableDef
    Set mabase = CurrentDb()
    For Each matable In mabase.TableDefs
        If Left(matable.Name, 4) <> "Msys" Then
        machaine = Replace(chreq, "rw101", matable.Name)
        DoCmd.RunSQL (machaine)
        End If
    Next matable
    Set mabase = Nothing
    End Sub
     
    'attention aux doublons
    Pouvez vous m'indiquer quelles sont les valeurs du code que je dois transformer avec les noms de ma base ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Const chreq = "INSERT INTO rw101 SELECT * FROM (SELECT * FROM rw101 IN 'C:\chemincomplet\xx.mdb');"
    le "rw101" doit il être remplacé par le nom de la base de données qui inclura la fusion des 2 bases ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim mabase As DAO.Database
    Mabase = le nom de ma base de données, ou un nom quelconque peut être reconnu?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim matable As TableDef
    Faut il dupliquer cette ligne avec "matable" remplacé par le nom de chaque table de la base initiale et "MatableDef" le nom de chaque table contenant les données fusionnées ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each matable In mabase.TableDefs
    Cette ligne me fait penser que ce n'est pas nécessaire, qu'il s'agit d'un nom "générique", mais je n'y connais rien...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If Left(matable.Name, 4) <> "Msys" Then
    Je n'ai aucune idée de ce à quoi peut correspondre cette ligne... est ce que "matable.Name" et "Msys" doive correspondre à des noms présents dans ma base de données, et si oui, à quoi ??

    Merci d'avance

  2. #2
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Salut,

    Pour commencer, un peu de lecture peut être ?
    http://access.developpez.com/cours/

  3. #3
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    le "rw101" doit il être remplacé par le nom de la base de données qui inclura la fusion des 2 bases ?
    Il s'agit du nom d'une table, qui est en fait remplacé par le vrai nom des tables dans la boucle For de ce code.


    Mabase = le nom de ma base de données, ou un nom quelconque peut être reconnu?
    Il s'agit du nom d'une variable et non celui de la base de données sur laquelle cette variable va pointer.
    Cette ligne me fait penser que ce n'est pas nécessaire, qu'il s'agit d'un nom "générique", mais je n'y connais rien...
    EN effet le For Each fait ici une boucle sur la collection des tables...
    Je n'ai aucune idée de ce à quoi peut correspondre cette ligne... est ce que "matable.Name" et "Msys" doive correspondre à des noms présents dans ma base de données, et si oui, à quoi ??
    Les tables systèmes (cachées par défaut) ont un nom commençant par msys.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Et dans tes bases déportés as-tu des clés primaires en numAuto ?

    Si oui, tu auras des soucis, car tu auras la même clé dans trois bases, et quand tu vas vouloir regrouper l'ensemble tu risques d'avoir des soucis.

    Philippe

Discussions similaires

  1. Fusion de base de données
    Par amarmama dans le forum Access
    Réponses: 8
    Dernier message: 12/11/2012, 00h27
  2. Réponses: 4
    Dernier message: 06/06/2008, 09h45
  3. Fusion de base de donnée sous access
    Par Majestik99 dans le forum VBA Access
    Réponses: 3
    Dernier message: 07/12/2007, 13h01
  4. Réponses: 2
    Dernier message: 15/04/2006, 20h12
  5. interprété du code stocké en base de donnée
    Par namosis dans le forum MFC
    Réponses: 7
    Dernier message: 14/11/2005, 22h06

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