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 :

Fusionner des tables de deux bases différentes dans une nouvelle base


Sujet :

VBA Access

  1. #1
    Membre confirmé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2011
    Messages : 48
    Par défaut Fusionner des tables de deux bases différentes dans une nouvelle base
    Bonjour,

    Je cherche à mettre dans une base de données (C) les tables avec les champs "fusionnés" de deux autres (A et B), sachant que A et B ont des tables avec les mêmes noms, mais avec des champs qui ne sont pas nécessairement identiques (en général dans la B, il y a des champs en plus).

    Ce que je veux, c'est que dans la base C, les tables aient les mêmes noms de tables, mais là, avec une structure de tables en "fusion", c'est-à-dire des tables comportant tous les champs de celles de A et de B. Autre chose, en général, les bases ont les mêmes clés (en fait, il s'agit de versions différentes de la même base). Et pour le moment, les enregistrements ne sont pas importants, c'est la structure qui compte. Donc, pour résumer, je veux que la structure d'une table dans C soit égale à celle en union des tables de même nom de A et de B.

    Bref, j'ai commencé avec un code (je me suis basé sur un post d'un autre site, mais je plante au niveau de l'instruction sql. Là, quelque chose manque c'est sûr, mais je ne sais pas quoi faire.

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    Sub Create_NB()
     
     
     
      Dim db1 As DAO.Database
    Dim db2 As DAO.Database
      Dim baz1 As String
      Dim Tb As TableDef
      Dim Tb2 As TableDef
      Dim baz2 As String
      Dim codsql As String
     
     
      baz1 = InputBox("Entrer nom base 2012 (chemin complet) :")
      baz2 = InputBox("Entrer nom base 2015 (chemin complet) :")
      Set db1 = OpenDatabase(baz1)
      Set db2 = OpenDatabase(baz2)
     
     DoCmd.SetWarnings False
     For Each Tb In db1.TableDefs
     
        For Each Tb2 In db2.TableDefs
     
        If Tb.Name = Tb2.Name Then
     
                codsql = "create table " & Tb.Name & " as select * FROM " & Tb.Name & " LEFT JOIN " & Tb2.Name & " ON " & ................?????:aie:
     
                 DoCmd.RunSQL codsql
     
        End If
     
        Next
     Next
     
     
    Set rst = Nothing
    Set Tb = Nothing
    Set Tb2 = Nothing
    Set db1 = Nothing
    Set db2 = Nothing
     
      DoCmd.SetWarnings True
     
     
     
    End Sub
    Et si vous avez une meilleure idée pour régler ce problème (du moment que j'aurais encore à régler la question des relations par la suite), je suis preneur.

    Merci de votre aide..

    Ore

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Par défaut
    Pour créer tes tables, je te conseille d'utiliser la bibliothèque DAO. En tous cas, c'est comme ça que je ferais. Tu as toutes les méthodes nécessaires pour créer des tables, avec des champs et leurs propriétés

  3. #3
    Membre confirmé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2011
    Messages : 48
    Par défaut
    Bonjour,

    Si je comprends bien, tu proposes d'utiliser Dao plutôt que le sql pour la création des tables de la base C ? il faudra lire la structure de chacune des tables des bases A et B et ajouter leurs champs respectifs en évitant les doublons de champs dans les tables de la base C. Cela semble faisable, quoique compliqué pour moi. J'avais espéré quelque chose de plus simple, et il me semblait que sql était accessible.. Néanmoins, je me pose maintenant la question si on peut travailler avec plusieurs bases différentes dans le cas du sql. Tous les exemples de "LEFT JOIN" parlent de fusionner des tables au sein de la même base ??

    Bref. Merci pour la réponse, je vais essayer cette piste aussi.

    Pour ce qui est du code précédent, j'ai essayé d'améliorer la syntaxe sql. Cela ne marche toujours pas malheureusement, mais je la donne ici quand même, si quelqu'un peut la corriger :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     codsql = "CREATE TABLE  " & Tb.Name & " as select * FROM " & Tb.Name & " LEFT JOIN " & Tb2.Name & " ON" & Tb.Name & ".id" & "=" & Tb2.Name & ".id" & ";"
    cordialement,

    Ore

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/02/2009, 17h20
  2. Deux formulaires différents dans une même page
    Par zabdaniel dans le forum Langage
    Réponses: 3
    Dernier message: 14/01/2008, 21h31
  3. [Débutant]Deux Threads différent dans une même classe?
    Par Invité dans le forum Concurrence et multi-thread
    Réponses: 10
    Dernier message: 26/01/2007, 16h58
  4. Réponses: 7
    Dernier message: 13/10/2006, 01h45
  5. Exporter une table dans une nouvelle base de données
    Par kaptnkill dans le forum Access
    Réponses: 14
    Dernier message: 12/07/2006, 00h34

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