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 :

Exporter objets dans autre Base


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 67
    Par défaut Exporter objets dans autre Base
    Bonjour,

    Après différentes recherches, j'ai trouvé les instruction VBA pour exporter des objets d'une base source dans une base destination.
    Mais pour l'instant je n'ai réussi à faire fonctionner cette procédure que si je la lance dans une troisième base.

    Voici mon code :
    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
    Private Sub CmdImport_Click()
    Dim nomdest As String, nomsrce  As String
        nomdest = "C:\Développement\Test Transfert\BL Iris.mdb"
        nomsrce = "C:\Développement\Test Transfert\BD-Maj.mdb"
        Call fExportAllObject(nomsrce, nomdest)
    End Sub
    Function fExportAllObject(strDataBaseS As String, strDataBaseD As String)
        Dim Dbs As Database
        Dim cnt As Container
        Dim doc As Document
     
        Set Dbs = OpenDatabase(strDataBaseS)
     
        'Exporte les formulaires
        Set cnt = Dbs.Containers("Forms")
        For Each doc In cnt.Documents
        DoCmd.TransferDatabase acExport, "Microsoft Access", _
        strDataBaseD, acForm, doc.Name, doc.Name, False, True
        Next
     
        'Exporte les états
        Set cnt = Dbs.Containers("Reports")
        For Each doc In cnt.Documents
        DoCmd.TransferDatabase acExport, "Microsoft Access", _
        strDataBaseD, acReport, doc.Name, doc.Name, False, True
        Next
     
        Dbs.Close: Set Dbs = Nothing
        Set cnt = Nothing
     
    End Function
    Je souhaiterais pouvoir exécuter la procédure d'exportation directement dans la base origine, mais je n'ai pas trouvé la solution, alors que dans le cas d'une importation d'objets, la procédure peut être exécutée depuis la base destination sans problème.

    Pouvez-vous m'indiquer comment modifier mon code pour pouvoir exécuter la procédure d'exportation dans la base source. Si toutefois VBA le permet !!!

  2. #2
    Membre confirmé
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 68
    Par défaut
    Salut,

    Je pense que si tu veux executer ce code dans ta base d'origine tu dois modifier ta fonction pour qu'elle utilise la base "current" comme source, un peu comme ca :

    Code VBA : 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
     
     
    Private Sub CmdImport_Click()
    Dim nomdest As String
        nomdest = "C:\Développement\Test Transfert\BL Iris.mdb"
        Call fExportAllObject(nomdest)
    End Sub
    Function fExportAllObject(strDataBaseD As String)
        Dim Dbs As Database
        Dim cnt As Container
        Dim doc As Document
     
        ' *********** défini la base actuelle comme source de données
        Set Dbs = Currentdb
     
        'Exporte les formulaires
        Set cnt = Dbs.Containers("Forms")
        For Each doc In cnt.Documents
        DoCmd.TransferDatabase acExport, "Microsoft Access", _
        strDataBaseD, acForm, doc.Name, doc.Name, False, True
        Next
     
        'Exporte les états
        Set cnt = Dbs.Containers("Reports")
        For Each doc In cnt.Documents
        DoCmd.TransferDatabase acExport, "Microsoft Access", _
        strDataBaseD, acReport, doc.Name, doc.Name, False, True
        Next
     
        Dbs.Close: Set Dbs = Nothing
        Set cnt = Nothing
     
    End Function

    Mais ce n'est qu'une idée non testée, peut-être que cela pourra t'aider à avancer.

    Autre piste, faire bien attention que tous tes formulaires, états, etc soient fermés quand tu veux les exporter de ta base actuelle.

    Bonne journée

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 67
    Par défaut
    Merci Nikotine, c'est exactement ce qu'il me fallait.
    Effectivement il faut bien veiller à ce que tous les objets soient fermés, sinon ça plante.

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

Discussions similaires

  1. filtrage d'objets dans la base django
    Par pat100 dans le forum Django
    Réponses: 3
    Dernier message: 08/10/2013, 12h37
  2. [MySQL] Exporter Select dans autre page
    Par voyageurdumonde dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/07/2011, 17h22
  3. Détruire un objet dans la base de données
    Par captainflex dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 15/11/2008, 18h25
  4. Création table à partir table dans autre base
    Par jcha dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2008, 16h41
  5. [CR9]état ou sous état avec chemin de l'objet dans la base
    Par cdu dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 18/03/2005, 14h08

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