Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1326 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Appel d'API en laissant la main à l'utilisateur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Appel d'API en laissant la main à l'utilisateur

n°510781
Poulou
Posté le 09-09-2003 à 11:11:05  profilanswer
 

Bonjour à tous,
 
Pour une appli en VBA sous Excel permettant de lancer des traitements (sur des cubes Essbase pour info), je fais appel à l'API fourni par Hyperion. Tout fonctionne sans problème, sauf que les traitements étant particulièrement long j'aimerai que les utilisateurs puissent garder la main alors que pour l'instant Excel est en attente de l'API et empêche tout travail sous Excel que ce soit sur le fichier avec le script VBA ou sur tout autre fichier.
Actuellement mon code :

Code :
  1. ' Affichage de la fenêtre de traitement et du curseur en forme de sablier
  2.         Form_Traitement.Show (vbModeless)
  3.         Application.Cursor = xlWait
  4.        
  5.         ' Appel de l'API simplifiée
  6.         Call Esb_ModifierValeurVariable("Phase_Source", Trim(CB_PhaseSource.Value))
  7. ' On efface la fenêtre et on remet le curseur par défaut
  8.         Form_Traitement.Hide
  9.         Application.Cursor = xlDefault


l'API simplifiée sont des fonctions que j'ai créé qui regroupe des commandes de l'API. Par exemple ici ModifierValeurVariable :

Code :
  1. Public Sub Esb_ModifierValeurVariable(ByVal nom_Variable As String, ByVal valeur_Variable As String)
  2. ' Modifie la valeur d'une variable de substitution à partir de son nom et de de la valeur que l'on souhaite lui donner en paramètres (2 string)
  3.     Dim sts As Long
  4.     Dim oVariable As ESB_VARIABLE_T
  5.     '  On indique le serveur (l'application et la base ne sont pas renseignées car variables globales au projet)
  6.     oVariable.Server = nom_serveur
  7.     ' On affecte à la variable "nom_variable", la valeur donnée (valeur_Variable)
  8.     oVariable.VarName = nom_Variable
  9.     oVariable.VarValue = valeur_Variable
  10.     sts = EsbCreateVariable(apihctx, oVariable)
  11. End Sub


Mais bon ceci ne doit pas avoir d'importance ici je pense.
 
Pour info, tout le traitement a lieu sur le serveur donc le poste client est à 0% au niveau charge processeur, il n'y a donc aucun soucis de ce côté là. J'ai pensé à mettre des DoEvents le problème étant que c une ligne unique ("sts = EsbCreateVariable(apihctx, oVariable)" dans l'exemple ci-dessus) sur laquelle il bloque.
 
Voila si vous pouviez m'aiquiller vers la bonne direction, je vous en serais bien reconnaissant !
Merci !

mood
Publicité
Posté le 09-09-2003 à 11:11:05  profilanswer
 

n°511463
Poipoi
Vive Grumly
Posté le 10-09-2003 à 09:08:18  profilanswer
 

Mets le traitement dans un thread


Message édité par Poipoi le 10-09-2003 à 10:07:10

---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°511504
Kyle_Katar​n
Posté le 10-09-2003 à 10:05:16  profilanswer
 

Le problème est que le multithreading en VB, même par les API n'est pas un modèle de fiabilité...

n°511506
Poipoi
Vive Grumly
Posté le 10-09-2003 à 10:07:43  profilanswer
 

Kyle_Katarn a écrit :

Le problème est que le multithreading en VB, même par les API n'est pas un modèle de fiabilité...


Comme tout ce qui est en VB
 
de toute façon c'est le seul moyen....


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°511519
karlkox
Posté le 10-09-2003 à 10:33:17  profilanswer
 

Poipoi a écrit :


Comme tout ce qui est en VB
 
de toute façon c'est le seul moyen....


 
Faux. Un DoEvents bien placé (en fin de traitement DANS la boucle) permet de laisser la main à windows.

n°511520
Poipoi
Vive Grumly
Posté le 10-09-2003 à 10:38:57  profilanswer
 

karlkox a écrit :


 
Faux. Un DoEvents bien placé (en fin de traitement DANS la boucle) permet de laisser la main à windows.


quand C une API qui fait le traitement ? :heink:  
DTC


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°511556
karlkox
Posté le 10-09-2003 à 11:26:55  profilanswer
 

j'ai répondu un peu trop vite, j'avais pas lu la deuxième partie de son problème ... :sarcastic:

n°511948
Poulou
Posté le 10-09-2003 à 19:29:46  profilanswer
 

OK merci pour les réponses...
Donc à priori c le thread la solution, par contre c relativement facile à mettre en oeuvre ou c plutôt galère ? J'ai des pbs de temps et j'ai pas envie de me lancer dans une aventure sans fin !

Citation :

Le problème est que le multithreading en VB, même par les API n'est pas un modèle de fiabilité...


C cool ça met en confiance ! :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Appel d'API en laissant la main à l'utilisateur

 

Sujets relatifs
[ASP] Dialogue utilisateur-AI[python / Apache] Problème de récupération de l'utilisateur
Appel systeme sous unixAPI C de MySQL: fuite de mémoire
[API] Comment savoir si la queue d'impression est vide ou non ?[Linux] Unicode, cherche API pour travailler avec UTF-8, UCS-4
(VBA/Access] Comment faire un appel de l'extérieur?boite avec reconnaissance du texte que l'utilisateur écrit
[Microsoft SDK] fonction de l'API win pour avoir le Load CPU ?Appel d'un fichier *.bat
Plus de sujets relatifs à : Appel d'API en laissant la main à l'utilisateur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR