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

Access Discussion :

Exporter une table dans une nouvelle base de données


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    Points : 49
    Points
    49
    Par défaut Exporter une table dans une nouvelle base de données
    Bonjour a tous,

    J'ai une question:
    Est-il possible d'exporter une table (en format .mdb) depuis access.
    Et je voudrais que la table ne contienne que les champs que je desire

    Exemple la table maitresse(20 champs)
    la table exportée (5 champs)

    ainsi je veux garder les information de contact seulement...

    (aussi je voudrais que le tout soit fait a partir dun bouton ds un formulaire, donc en vb)


    La table exporté sera fusionnée ds word

    merci

  2. #2
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,
    Eventuellement, tu peux faire une requête Sélection et ne choisir que les champs qui t'interresse
    Ensuite tu n'as plus qu'a exporter le résultat de cette requête.
    Bonne continuation.
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    Points : 49
    Points
    49
    Par défaut
    ouep' bonne idéé pour le select,
    mais comment faire en vb a partir d'un bouton, exporter la table ds un autre fichier mdb independant au projet, et l'enregister sur le disque dur ?

    Merci a tous pour votre aide !

  4. #4
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Re,
    Interresse toi à "DoCmd.TransferDatabase " ..........et fais quelque recherche sur les anciens messages
    Bonne continuation.
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    Points : 49
    Points
    49
    Par défaut
    merci encore,
    j'ai fait une recherche sur les anciens message mais il semble que ce soit tjrs pour exporter vers excel ou xml etc..

    DoCmd.TransferDatabase a besoin d'une base de donée de destination

    Donc je doit trouver le moyen pour creer une base de donnée sur le disque dur avant de povoir faire un transfert...

    Quelqu'un a une suggestion ?

    Merci

  6. #6
    Expert éminent sénior

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

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Interresse toi à DBEngine.CreateDatabase

  7. #7
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Re,
    Voici un petit exemple pour ce que tu veux faire (le code est commenté pour explication) Ce code est associé à l'événement 'Sur clic' d'un bouton de commande et a pour objectif de créer une nouvelle base et de copier des tables de la base actuelle vers la nouvelle....ensuite à toi d'adapter cela à ton application.
    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
    Private Sub Cmd15_Click()
    Dim NomBase As String
    NomBase = "NomNouvelleBase" & ".mdb"
    DoCmd.Hourglass True
    'Création nouvelle base
    Dim dbsNew As Database
    Set dbsNew = CreateDatabase(CurrentDBDir & NomBase, dbLangGeneral, dbVersion30)
    Set dbsNew = Nothing
    
    'Recopie des tables dans celle-çi
    Dim appAccess As Access.Application
    Dim Destination As String
    Set appAccess = CreateObject("Access.Application.8")
    appAccess.OpenCurrentDatabase CurrentDBDir & "NomBaseActuelle.mdb"
    Destination = CurrentDBDir &  NomBase
    appAccess.DoCmd.CopyObject Destination, "NomTableNouvelleBase", acTable, "NomTableACopier"
    appAccess.Quit
    
    DoCmd.Hourglass False
    MsgBox "*** TRAITEMENT REUSSI ***" , vbInformation, "Copie table(s) terminée(s)"
    End Sub
    Ceci n'est qu'un exemple, car il y a d'autre façon de faire....
    Bonne continuation.
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    Points : 49
    Points
    49
    Par défaut
    Merci, j'avais trouvé la commande DoCmd.CreateTable et j'ai réussi a batir ma bd mais il semble que un partie du code pour le transfert de la table cause une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set appAccess = CreateObject("Access.Application.8")
    je crois avoir trouvé
    Access.Application.8 = access 97
    Access.Application.9 = access 2000



    Merci encore mille fois !

  9. #9
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    je crois avoir trouvé
    Access.Application.8 = access 97
    Access.Application.9 = access 2000
    L'exemple donné était sous Access97, donc comme je l'ai dis, il faut adapter à ta base........pour Access 2003, c'est:
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    Points : 49
    Points
    49
    Par défaut
    ok maintenant le programme ne crash plus mais je ne voit pas la table ds la nouvelle bd ?

    pourtant le msgbox affiche traitement reussi ?
    et le poids de nouvelle bd est différent d'une nouvelle bd (sans copy object)

    une idee?

    merci mille fois


  11. #11
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Oups....
    Et oui, c'est ça de passer de AC97 à AC2003...
    A corriger ==> CurrentDBDir est une fonction créer dans AC97 pour récupérer le chemin de la base en cours.
    Donc a remplacer par CurrentProject.Path
    Aprés cela devrait fonctionner
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    Points : 49
    Points
    49
    Par défaut
    désolé, je ne suis pas en access 2003 mais 2000 et CurrentDBDir semble bien fonctionner

    serait-ce possible que le probleme vienne DoCmd.CopyObject

    car je croyait qu'il serait preferable d'utiliser DoCmd.TransfertDatabase?

    ** EDIT J'ai réussi avec DoCmd.TransfertDatabase

    Ma derniere question :

    Comme vous savez, je veux à partir d'une table deja existante (table mère) ds mon projet, creer une nouvelle table ds mon projet (et c'est celle-ci qui sera exporté vers la bd crée).

    Puis-je creer un table a partir d'une requete
    ma requete étant un SELECT sur la table mère (avec les champs que je veux garder)

    Donc je voudrais creer une table a partir du resultat de la requete sur la table mere.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT adresse,nom,ville,codepostal FROM ENTREPRISE
    Cela serait le principe de ma requete sur la table mère

    Merci beaucoup pour ces réponse plus que rapides


  13. #13
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    D'abord une réponse sur l'emploi de DoCmd.CopyObject ......en fait j'avais utiliser ceci, car mes tables sont des tables attachées et la méthode TransfertDataBase ne fonctionne pas dans ce cas (sauf erreur de ma part.)

    Pour la deuxième question, c'était simple tu y étais déjà.......au lieu d'une requête Select...utilise une requête "Création de table"
    Tu pars d'une requête Select et dans la barre d'outils tu change simplement ton type de requête.

    [EDIT] Et en plus avec l'assistant tu pourras directement indiquer l'emplacement de la base dans laquelle tu veux créer cette nouvelle table.
    Bonne continuation.
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    Points : 49
    Points
    49
    Par défaut
    Ok pour le copy objet mais jai fait le test avec une table liée et DoCmd.TransfertTable et aucune erreur ca fonctionne.
    (elle reste liée a l'externe)...

    pour la creation de la table, je doit passer par vb absolument donc je ne peux pas creer a partir de l'assistant ?

    Est-ce possible ?


  15. #15
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    pour la creation de la table, je doit passer par vb absolument donc je ne peux pas creer a partir de l'assistant ?
    Et qu'est ce qui t'empêche de faire quand même ta requête "Création de table" et de l'exécuter à partir du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenQuery "NomRequête"
    Sinon pour
    jai fait le test avec une table liée et DoCmd.TransfertTable et aucune erreur ca fonctionne.
    (elle reste liée a l'externe)... c'est justement ce qui gêne, car en fait tu ne recopie que le lien de ta table.....pas génial pour des tables d'archives
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

+ 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. [AC-2003] insert des données d'une table dans une table d'une base externe
    Par marieo dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/11/2009, 14h29
  3. Réponses: 2
    Dernier message: 12/12/2007, 11h52
  4. Réponses: 7
    Dernier message: 21/08/2006, 16h27
  5. Réponses: 2
    Dernier message: 02/06/2006, 11h26

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