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 :

Executer une proc�dure Access sous C++Builder


Sujet :

C++Builder

  1. #21
    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
    Par d�faut
    La Macro1 avec le nom MaMacro est elle deja presente dans ta base Access.

  2. #22
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par d�faut
    Oui, mais sous le nom de Update()
    Pi�ce jointe 7480

  3. #23
    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
    Par d�faut
    Je sais ouvrir Access et charger la base, je ne sais pas s'il faut utiliser < #include <utilcls.h> >, je ne l'ai pas fait.
    Le code
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Variant vMSAccess;
    vMSAccess = Variant::CreateObject("Access.Application");
    vMSAccess.OlePropertySet("Visible", true);
    Variant vFileName;
     
    // ouverture d'une table Access
    vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\MySQL\\UtilisationBDE\\fichiers\\maBdd\\maBdd1.mdb";
     
    vMSAccess.OleFunction("OpenCurrentDatabase", vFileName, false);
    }
    Je cherche pour lancer la macro.

  4. #24
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par d�faut
    J'ai repris ton code, :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Variant vMSAccess;
    vMSAccess = Variant::CreateObject("Access.Application");
    vMSAccess.OlePropertySet("Visible", true);
    Variant vFileName;
     
    // ouverture d'une table Access
    vFileName = "E:\\MDB\\GDO.mdb";
     
    vMSAccess.OleFunction("DoCmd.RunMacro \"update\", false, false");
    il me manque la fa�on de faire l'appel

  5. #25
    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
    Par d�faut
    Comme je ne connais pas Access, et que je n'ai aucune Doc, je n'arrive pas a programmer une Macro pour tester, je te donne donc le code pour ouvrir et fermer Access charger ta base, la je suis sur que cela fonctionne, pour lancer la Macro a voir?
    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
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Variant vMSAccess;
    vMSAccess = Variant::CreateObject("Access.Application");
    vMSAccess.OlePropertySet("Visible", true);
    Variant vFileName;
     
    // ouverture d'une base Access
    vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\MySQL\\UtilisationBDE\\fichiers\\maBdd\\maBdd1.mdb";
    vMSAccess.OleFunction("OpenCurrentDatabase", vFileName, false);
    // ici la base est chargee dans Access
     
    // AccessApplication1.DoCmd.RunMacro('Macro1.MaMacro',emptyparam,emptyparam);
    vMSAccess.OlePropertyGet("DoCmd").OlePropertySet("RunMacro", "essai"); // les parametres NULL sont optionnels
     
    // fermeture d'Access
    vMSAccess.OleProcedure("CloseCurrentDatabase"); // on ferme la base
    vMSAccess.OleFunction("Quit"); // on quitte Access
    // liberation memoire
    vMSAccess = Unassigned;
    }

  6. #26
    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
    Par d�faut
    J'ai reussi avec Access 2003 a ouvrir Access charger une base executer une macro integree a la base fermer la base quitter Access.
    le 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
     
    // je ne suis pas sur mais au cas ou ne pas oublier #include <utilcls.h>
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Variant vMSAccess;
    vMSAccess = Variant::CreateObject("Access.Application");
    vMSAccess.OlePropertySet("Visible", true);
    Variant vFileName;
     
    // ouverture d'une table Access
    vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\MySQL\\UtilisationBDE\\fichiers\\maBdd\\maBdd1.mdb";
    vMSAccess.OleFunction("OpenCurrentDatabase", vFileName, false);
     
    // executer la macro
    vMSAccess.OleProcedure("Run", "essai");
     
    // fermeture d'Access
    vMSAccess.OleProcedure("CloseCurrentDatabase"); // on ferme la base
    vMSAccess.OleFunction("Quit"); // on quitte Access
    // liberation memoire
    vMSAccess = Unassigned;
    }

  7. #27
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par d�faut
    Merci pour vos efforts.

    1- J'ai cr�� une nouvelle base de donn�es, sauv�e dans c:\\mabd.mdb
    2- Cr�� une macro "Macro1" comme action j'ai fait: BoitMsg ,
    elle affiche juste une boite de dialogue // comme ShowMessage.

    J'ai executer les deux solutions que tu as propos� :

    Pour la premi�re solution, il me g�n�re une exception : Membre introuvale ??
    pour la deuxi�me solution, il me g�n�re une exception : EOleSysError ???

    Je ne comprend pas tout cela .


    Merci encore une fois "Blondelle"

  8. #28
    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
    Par d�faut
    A tu essaye ta macro directement dans Access.
    Sur quelle ligne se situe l'erreur.
    Je joind la base avec la macro qui affiche une boite de dialogue

  9. #29
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par d�faut
    OK j'ai trouver mon erreur.
    voici le code final :
    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
     
     
    //
    // DECLARATION
    //
       Variant vMSAccess,  // Application ACCESS
                 vFileName;   // Nom de la base de données
     
    //
    // LANCEMENT DE MS ACCESS : en arrière plan
    //
       vMSAccess = Variant::CreateObject("Access.Application");
       vMSAccess.OlePropertySet("Visible", false);
     
    //
    // OUVERTURE DE LA BASE DE DONNES
    //
       vFileName = "C:\\maBdd1.mdb";
       vMSAccess.OleFunction("OpenCurrentDatabase", 
                                        vFileName, 
                                        false);
     
    //
    // EXECUTION DE LA PROCEDURE :: ESSAI
    //
       vMSAccess.OleProcedure("Run", "essai");
     
    //
    // FERMETURE DE LA BASE DE DONNEES
    //
       vMSAccess.OleProcedure("CloseCurrentDatabase"); 
     
    //
    // FERMETURE DE MS ACCESS
    //
       vMSAccess.OleFunction("Quit"); 
     
    //
    // LIBERATION DE LA MEMOIRE
    //
       vMSAccess = Unassigned;
    Ce code sert pour executer une proc�dure stock�e dans Access, impl�ment�e dans un module.

    MERCI "BLONDELLE"

  10. #30
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par d�faut
    Supposons que l'on veux executer une macro, comment-faire.
    j'ai fais ceci :

    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
     
    //
    // LANCEMENT DE MS ACCESS : en arrière plan
    //
       vMSAccess = Variant::CreateObject("Access.Application");
       vMSAccess.OlePropertySet("Visible", false);
     
    //
    // OUVERTURE DE LA BASE DE DONNES
    //
       vFileName = "C:\\maBdd1.mdb";
       vMSAccess.OleFunction("OpenCurrentDatabase", 
                                        vFileName, 
                                        false);
     
    //
    // EXECUTION DE LA MACRO:: Macro1
    //
       vMSAccess.OleProcedure("RunMacro", "Macro1");
     
    //
    // FERMETURE DE LA BASE DE DONNEES
    //
       vMSAccess.OleProcedure("CloseCurrentDatabase"); 
     
    //
    // FERMETURE DE MS ACCESS
    //
       vMSAccess.OleFunction("Quit"); 
     
    //
    // LIBERATION DE LA MEMOIRE
    //
       vMSAccess = Unassigned ;
    Mais sans succ� !!

  11. #31
    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
    Par d�faut
    Salut kmaniche:
    Je suis tres content pour toi que cela marche.
    vMSAccess.OleProcedure("RunMacro", "Macro1");
    Pour pouvoir te repondre je suis alle faire un tour sur la FAQ Access, il y a des commandes qui ne fonctionnent que pour Access 97, "RunMacro" refuse de fonctionner en Access 2003? quand a appeler Macro1 dans Access, a voir comment c'est concu Macro1 semble correspondre a Module1 (en Excel), et un Module peut contenir plusieurs procedures, d'ailleurs la fonction RunMacro demande la Macro puis la procedure puis deux parametres Null (facultatifs).
    Pour ecrire la Procedure VBAccess j'ai galere, je ne connais pas Access, et je n'ai aucun document sur son fonctionnement, l'essentiel est d'avoir trouve une solution de depannage.

  12. #32
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par d�faut
    Merci encore une fois,

    Alors je fais

  13. #33
    Membre chevronn�

    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    531
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 531
    Par d�faut
    Ce qui est dommage c'est qu'il faut access sur le poste, contrairement � OLEDB pour l'acc�s aux requ�tes et tables.

    Merci pour vos recherches.

    Je pense que certaines solutions pourraient aller en FAQ

  14. #34
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par d�faut
    Citation Envoy� par Fbartolo
    Ce qui est dommage c'est qu'il faut access sur le poste, contrairement � OLEDB pour l'acc�s aux requ�tes et tables.

    Merci pour vos recherches.

    Je pense que certaines solutions pourraient aller en FAQ
    Ben oui, et tout �a grace � BLONDELLE

  15. #35
    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
    Par d�faut
    Fbartolo a �crit :
    Ce qui est dommage c'est qu'il faut access sur le poste, contrairement � OLEDB pour l'acc�s aux requ�tes et tables.

    Merci pour vos recherches.

    Je pense que certaines solutions pourraient aller en FAQ
    C'est propose a la FAQ comme il n'existe rien pour gerer Access avec BCB c'est un debut.

  16. #36
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par d�faut
    Bonsoir,

    Histoire de mise au point,

    Comment dois-je faire si ma base de donn�e �t� prot�g�e par mot de passe.

    Merci "Blondelle"

  17. #37
    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
    Par d�faut
    kmaniche a ecrit:
    Bonsoir,

    Histoire de mise au point,

    Comment dois-je faire si ma base de donn�e �t� prot�g�e par mot de passe.
    Sans garantie car je ne connais pas Access et je n'ai pas de DOC dans la FAQ access j'ai trouve ca.
    Il est possible d'int�grer le mot de passe au code lors de l'ouverture de la base de donn�es :
    Dim db as Dao.DataBase

    Set db = DBEngine.OpenDatabase("C:\MaBase.mdb", False, False, ";pwd=password")

    'Effectuer le traitement sur la base de donn�es ici.

    db.Close
    Je pense donc que le code devrait ressembler a ca.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    Variant password;
    password = "MotDePasse";
    vMSAccess.OleFunction("OpenDatabase", vFileName, false, false, password);

  18. #38
    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
    Par d�faut
    J'ai trouve dans l'aide une autre facon qui correspond a la facon qui avait servi au debut pour lancer ton appli.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    vMSAccess.OleFunction("OpenCurrentDatabase", vFileName, false, password);

  19. #39
    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
    Par d�faut
    Peut tu me dire si les fonction d'ouverture de fichier proteges fonctionnent.

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 2 sur 2 Premi�rePremi�re 12

Discussions similaires

  1. Lecture d'une table Access sous C++ Builder 6
    Par guiling dans le forum C++Builder
    R�ponses: 1
    Dernier message: 22/06/2010, 10h36
  2. R�ponses: 1
    Dernier message: 12/07/2007, 11h51
  3. Executer une proc�dure Access sous Delphi
    Par kmaniche dans le forum Bases de donn�es
    R�ponses: 7
    Dernier message: 08/12/2006, 20h51
  4. [VBA-E]Execution d'une macro access sous excel VBA
    Par virtualinsanity dans le forum Macros et VBA Excel
    R�ponses: 19
    Dernier message: 21/04/2006, 17h27
  5. Pb pour executer une proc�dure sous SQL PLUS
    Par rabddoul dans le forum Oracle
    R�ponses: 4
    Dernier message: 21/10/2005, 15h40

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