La Macro1 avec le nom MaMacro est elle deja presente dans ta base Access.
La Macro1 avec le nom MaMacro est elle deja presente dans ta base Access.
--
Plutot que d'essayer de réinventer la roue, apprenons à nous en servir
Oui, mais sous le nom de Update()
Pièce jointe 7480
Les règles Les cours La fonction rechercher
N'oubliez pas de mettre en et de voter.
La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !
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
Je cherche pour lancer la macro.
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); }
--
Plutot que d'essayer de réinventer la roue, apprenons à nous en servir
J'ai repris ton code, :
il me manque la façon de faire l'appel
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");
Les règles Les cours La fonction rechercher
N'oubliez pas de mettre en et de voter.
La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !
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; }
--
Plutot que d'essayer de réinventer la roue, apprenons à nous en servir
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; }
--
Plutot que d'essayer de réinventer la roue, apprenons à nous en servir
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"
Les règles Les cours La fonction rechercher
N'oubliez pas de mettre en et de voter.
La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !
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
--
Plutot que d'essayer de réinventer la roue, apprenons à nous en servir
OK j'ai trouver mon erreur.
voici le code final :
Ce code sert pour executer une procédure stockée dans Access, implémentée dans un module.
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;
MERCI "BLONDELLE"
Les règles Les cours La fonction rechercher
N'oubliez pas de mettre en et de voter.
La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !
Supposons que l'on veux executer une macro, comment-faire.
j'ai fais ceci :
Mais sans succé !!
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 ;
Les règles Les cours La fonction rechercher
N'oubliez pas de mettre en et de voter.
La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !
Salut kmaniche:
Je suis tres content pour toi que cela marche.
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).vMSAccess.OleProcedure("RunMacro", "Macro1");
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.
--
Plutot que d'essayer de réinventer la roue, apprenons à nous en servir
Merci encore une fois,
Alors je fais
Les règles Les cours La fonction rechercher
N'oubliez pas de mettre en et de voter.
La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !
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 à BLONDELLEEnvoyé par Fbartolo
Les règles Les cours La fonction rechercher
N'oubliez pas de mettre en et de voter.
La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !
C'est propose a la FAQ comme il n'existe rien pour gerer Access avec BCB c'est un debut.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
--
Plutot que d'essayer de réinventer la roue, apprenons à nous en servir
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"
Les règles Les cours La fonction rechercher
N'oubliez pas de mettre en et de voter.
La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !
kmaniche a ecrit:
Sans garantie car je ne connais pas Access et je n'ai pas de DOC dans la FAQ access j'ai trouve ca.Bonsoir,
Histoire de mise au point,
Comment dois-je faire si ma base de donnée été protégée par mot de passe.
Je pense donc que le code devrait ressembler a 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
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);
--
Plutot que d'essayer de réinventer la roue, apprenons à nous en servir
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);
--
Plutot que d'essayer de réinventer la roue, apprenons à nous en servir
Peut tu me dire si les fonction d'ouverture de fichier proteges fonctionnent.
--
Plutot que d'essayer de réinventer la roue, apprenons à nous en servir
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager