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

C++Builder Discussion :

Voici comment copier une table Access dans une autre base de donnee Access


Sujet :

C++Builder

  1. #1
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut Voici comment copier une table Access dans une autre base de donnee Access
    Bonsoir
    Voici comment coiper une table d'une base de donnees dans une autre base
    Sur la Form deux TButtons
    le .cpp
    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
    48
     
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    #include "utilcls.h"     // ne pas oublier
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    Variant vMSAccess, vSource;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    try
     {
        vMSAccess = Variant::GetActiveObject("Access.Application");
    }
     catch(...)
     {
        vMSAccess = Variant::CreateObject("Access.Application");
    }
    // on rend visible Access
    vMSAccess.OlePropertySet("Visible", true);
    // Désactive le "Security warning"
    vMSAccess.OlePropertySet("AutomationSecurity", 1);
    // on defini le chemin de la base a charger
    vSource = "C:\\Users\\home\\Documents\\OleAccess\\Nouveau dossier\\bd1.mdb";
    // ouverture de la table Access
    vMSAccess.OleFunction("OpenCurrentDatabase", vSource, false);
    vMSAccess.OlePropertyGet("DoCmd").OleFunction("CopyObject", "C:\\Users\\home\\Documents\\OleAccess\\Nouveau dossier\\bd2.mdb",
            "copie_ & tblSource", 0, "tblSource");
    vMSAccess.OleProcedure("CloseCurrentDatabase");
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    // on quitte Access
    vMSAccess.OleFunction("Quit");
    // liberation memoire
    vMSAccess = Unassigned;
    }
    //---------------------------------------------------------------------------
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  2. #2
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Hello
    j'ai testé ton code mais malheureusement il ne fonctionne pas sous Office 2007
    l'application reste bloquée ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    vMSAccess.OleFunction("OpenCurrentDatabase", vSource, false);
    d'autre part me manque-il pas quelque chose dans ton code car
    Voici comment coiper une table d'une base de donnees dans une autre base
    et dans ton code il me semble qui'il manque un paramètre à savoir tblSource

    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    DjmSoftware merci pour ton teste
    dans ton code il me semble qui'il manque un paramètre à savoir tblSource
    Il manque surtout une explication
    " bd1.mdb " est la base de donnees source qui contient une table nommee " tblSource "
    " bd2.mdb " est la base de donnees destination dans laquelle va etre copiee " tblSource " qui est renommee " copie_ tblSource "
    Le code a ete teste avec BCB6, Access 2010, Window7
    Je pense que le probleme vient de l'unicode tu dois utiliser une version BCB plus recente
    Essai soit WideString("OpenCurrentDatabase")
    soit WideString(vSource)
    ou vMSAccess.OleFunction(WideString("OpenCurrentDatabase"), WideString(vSource), false);
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  4. #4
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    J'ai teste ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // ouverture de la table Access
    vMSAccess.OleFunction(WideString("OpenCurrentDatabase"), WideString(vSource), false);
    Ca fonctionne chez moi sous ( BCB6, Access 2010, Window7 )
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

Discussions similaires

  1. Ajouter des observations d'une table SAS dans une table ACCESS
    Par michail_arkov dans le forum Outils BI
    Réponses: 4
    Dernier message: 12/11/2013, 16h25
  2. Réponses: 2
    Dernier message: 16/01/2010, 16h24
  3. Réponses: 1
    Dernier message: 11/06/2008, 13h33
  4. Réponses: 3
    Dernier message: 20/12/2006, 17h59

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