begin process at 2012 05 28 09:44:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Base de données

 > 

Autre

 > 

Automation Access : exécution de macro


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Automation Access : exécution de macro

mercredi 12 mars 2008 à 11:53:54 | Automation Access : exécution de macro

nico_44

Bonjour à toutes et à tous,

Dans une application développée en VC++ 2005, je pilote une application 
Access 2003 qui me gère essentiellement mes impressions.

Avant certaines impressions, j'ai besoin d'exécuter certaines fonctions de 
traitement. J'ai donc tout regroupé dans des macros, qui appellent ces 
fonctions et affichent ou impriment mes états. Depuis C++, je n'ai donc plus 
qu'à appeler les différentes macros, par le biais de la commande suivante :

HRESULT hr = pAccess->DoCmd->RunMacro(szMacro);

Mon problème vient du fait que certaines fonctions appelées dans mes macros 
Access peuvent mettre un temps assez long pour s'exécuter (plusieurs dizaines 
de secondes).
Et quand C++ estime que le temps d'exécution de ma macro est trop long, il 
m'affiche une boite de dialogue "Serveur Occupé" avec le message "Impossible 
de terminer cette action car le programme "MaBaseAccess" ne répond pas. 
Choisissez Basculer vers et corrigez le problème." avec comme bouton 
"Basculer vers..." et "Réessayer".
En cliquant plusieurs fois sur le bouton réessayer, mon état fini par 
s'afficher ou s'imprimer.

Voici donc ma question : comment faire pour empêcher l'apparition de cette 
boite de dialogue. Y-a-t'il un timer à régler? Peut-on indiquer à C++ 
d'attendre indéfiniment la fin de l'exécution de la commande? Ou dois-je 
carrément procéder autrement?

Merci d'avance pour vos réponses.
mercredi 12 mars 2008 à 14:50:38 | Re : Automation Access : exécution de macro

Neo_Fr

Membre Club
Essaye en lancant ta fonction dans un Thread (CreateThread) puis attd que ton thread s'arrete avec WaitForSingleObject HANDLE hThread; DWORD dwExitCode; hThread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)pAccess->DoCmd->RunMacro, szMacro, 0, 0); WaitForSingleObject(hThread, INFINITE); GetExitCodeThread(hThread, &dwExitCode); if(dwExitCode) //... CloseHandle(hThread); Neo_Fr
mercredi 12 mars 2008 à 16:48:52 | Re : Automation Access : exécution de macro

nico_44

Réponse acceptée !
J'ai trouvé une autre solution, j'empêche l'affiche de cette boite de dialogue ! Il suffit de mettre le code suivant dans la fonction InitInstance de l'application (juste après l'appel de la fonction AfxOleInit) : COleMessageFilter* pOleMsgFilter = AfxOleGetMessageFilter(); if (pOleMsgFilter) { pOleMsgFilter->Revoke(); pOleMsgFilter->EnableBusyDialog(FALSE); pOleMsgFilter->EnableNotRespondingDialog(FALSE); pOleMsgFilter->Register(); } J'avais déjà essayé la solution du thread, mais le message apparaissait quand même. En effet, celà est dû la méthode d'appel COM. J'aurais aussi pû augmenter le délai d'affichage de la fenêtre en utilisant AfxOleGetMessageFilter()->SetMessagePendingDelay(nTimeout), mais dans mon cas, ça ne répondait au problème. Pour ceux qui veulent plus de précision : http://support.microsoft.com/kb/248019/en-us Merci quand même de t'être penché sur mon problème ;)


Cette discussion est classée dans : access, macro, fonctions, exécution, macros


Répondre à ce message

Sujets en rapport avec ce message

les bases de donnees en access [ par malbackt ] Bonjour à tous;J'ai une base de données que j'ai programmé dans access, et j'ai trouvé unproblème d'exécution de la requête suivante:trouver les clien insertion ligne décalage macro [ par gradzila ] Bonjour, Voilà j'ai une question qui va vous paraître idiote mais je n'arrive pas à faire ce truc qui à mon avis doit être tout simple. Prenons c'es Nested class access [ par mondrone ] Bonsoir, Je n'arrive pas à trouver comment je peux faire dans le cas suivant : Imaginons : Class A { Private : Int *mavar; Public : Cl Probleme lors de l'exécution en mode release dans QT [ par housie ] Bonjour à tous [^^happy13] , Je suis sous windows et je construit une application Qt, dans mon programme j'ai installer un event filtre sur un QSlide Lire un fichoier à l'exécution [ par nassim1987 ] Bonjour, j'ai créer un programme ou je lis un fichier en entré, les données du fichier subissent des traitements et donne un fichier en sortie, bon connexion à une base de données ACCESS dans un pg DEV C++ [ par oldarra2003 ] Bonjour Je suis un débutant en programmation C++ et je ne sais vraiment pas comment procéder pour se connecter sur une base ACCESS dans un pg C++. Il Tasklist en C [ par StayCrunchy ] Bonjour, Je veux faire un programme qui a pour but de lister les programmes en cours d'exécution, exactement comme le fait la commande "tasklist" sou Borland C++ Builder Standard base de données Access [ par albert232 ] Bonjour, J'ai une application VB5 de calcul qui utilise une base de données Access. Elle fonctionne très bien. Je m'initie au logiciel Borland C++ supprimer une ligne d'un datagridview et d'une bdd access [ par pam006 ] Bonjour, Je suis développe une application .net avec visual studio 2008 et access 2010. Cette application consiste a gérer une médiathèque. J'utilise


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales