|
| Services Windows s'arrète automatiquement |
| Iniciado por Mathurin PARKOUDA, 05,nov. 2019 13:58 - 3 respuestas |
| |
| | | |
|
| |
Miembro registrado 2 mensajes |
|
| Publicado el 05,noviembre 2019 - 13:58 |
Bonjour Chers développeurs J'ai conçu un service qui permet d'imprimer un bon automatiquement dès qu'un nouveau enregistrement est fait. Quant je l’exécute ça me donne le résultât auquel je m'attend. Mais quand je l'installe et que je vais dans le services windows pour le démarrer, voici le message que ça m'affiche: "***Le service PROJET_IMPRESSION_BON sur ordinateur local a démarré et s'est ensuite arrêté. Certains services s'arrêtent automatiquement s'ils ne sont pas utilisés par d'autres services ou programmes****"

Merci de l'aide Voici mon code ci-dessous: // Résumé : <indiquez ici ce que fait la procédure> // Syntaxe : // IMPRIME_BON () // // Paramètres : // Aucun // Valeur de retour : // Aucune // // Exemple : // Indiquez ici un exemple d'utilisation. // PROCÉDURE IMPRIME_BON() //trouver les ventes non imprimées //nVarOdreComde est un entier
HExécuteRequête(REQ_SELECT_VTE_NON_IMPRIM,hRequêteDéfaut) HLitPremier(REQ_SELECT_VTE_NON_IMPRIM) SI HTrouve(REQ_SELECT_VTE_NON_IMPRIM) ALORS TANTQUE PAS HEnDehors(REQ_SELECT_VTE_NON_IMPRIM) HExécuteRequête(REQ_SELECT_ORDRE_CMDE,hRequêteDéfaut,REQ_SELECT_VTE_NON_IMPRIM.Num_Bl) HLitPremier(REQ_SELECT_ORDRE_CMDE) SI HTrouve(REQ_SELECT_ORDRE_CMDE) ALORS //Bon de commande pour la section concernéd POUR k=1 _À_ gnVarNbreFoisImprimeTickeINI iInitRequêteEtat(ETAT_RECU_PAR_SECTION,REQ_SELECT_VTE_NON_IMPRIM.Num_Bl,REQ_SELECT_ORDRE_CMDE.Serie_DBL,gnVarNumSection) iImprimeEtat(ETAT_RECU_PAR_SECTION) FIN HLitSuivant(REQ_SELECT_ORDRE_CMDE) TANTQUE PAS HEnDehors(REQ_SELECT_ORDRE_CMDE) SI VarSectionImprimableINI=1 ALORS POUR k=1 _À_ gnVarNbreFoisImprimeTickeINI iInitRequêteEtat(ETAT_RECU_PAR_SECTION,REQ_SELECT_VTE_NON_IMPRIM.Num_Bl,REQ_SELECT_ORDRE_CMDE.Serie_DBL,gnVarNumSection) iImprimeEtat(ETAT_RECU_PAR_SECTION) FIN FIN //Impression note du client iInitRequêteEtat(ETAT_RECU_PAR_SECTION_CLI,REQ_SELECT_VTE_NON_IMPRIM.Num_Bl,REQ_SELECT_ORDRE_CMDE.Serie_DBL) iImprimeEtat(ETAT_RECU_PAR_SECTION_CLI) //Marquage ligne facture pour imprimle HExécuteRequête(REQ_MARQUE_IMPRIM_LIGNE_FACT,hRequêteDéfaut,REQ_SELECT_VTE_NON_IMPRIM.Num_Bl) HLitSuivant(REQ_SELECT_ORDRE_CMDE) FIN FIN //Marquage facture pour imprime HExécuteRequête(REQ_MARQUE_FACTURE_IMPRIM,hRequêteDéfaut,REQ_SELECT_VTE_NON_IMPRIM.Num_Bl) HLitSuivant(REQ_SELECT_VTE_NON_IMPRIM) FIN //sinon // FIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 2.321 mensajes |
|
| Publicado el 05,noviembre 2019 - 15:48 |
Bonjour,
Je dirais que le problème ne vient pas de votre code mais de : 1. la façon dont le service est installé, en particulier des droits affectés. 2. du code d'initialisation du service que retourne une erreur que vous n'avez pas programmée (connexion à la BdD HF en particulier).
-- Bon dev, Jean-Pierre |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 2 mensajes |
|
| Publicado el 05,noviembre 2019 - 16:22 |
Bonjour, merci pour l'aide Je ne m'y connait pas en projet Service Windows, c'est une première pour moi. Voici mon code d'initialisation : un code que j'ai juste copié dans le projet windows principale et qui marche:
gnVarNbreFoisImprimeTickeINI est un entier gnVarNumSection est une chaîne VarSectionImprimableINI est un booléen
gsVarMotPasseConnexion est une chaîne gsVarMotParsseConnexDecrypt est une chaîne VarTesConn est un booléen gsVarNomOrga est une chaîne="TITIS"
MaConnexion..Provider=hAccèsHFClientServeur MaConnexion..Serveur=RegistreLit("HKEY_CURRENT_USER\SOFTWARE\iSOFT\iCOM_HF","SERVEUR") MaConnexion..BaseDeDonnées=RegistreLit("HKEY_CURRENT_USER\SOFTWARE\iSOFT\iCOM_HF","BD") MaConnexion..Utilisateur=RegistreLit("HKEY_CURRENT_USER\SOFTWARE\iSOFT\iCOM_HF","USER")
gsVarMotPasseConnexion=RegistreLit("HKEY_CURRENT_USER\SOFTWARE\iSOFT\iCOM_HF","PASSWORD") gsVarMotParsseConnexDecrypt =Décrypte(gsVarMotPasseConnexion,"password") MaConnexion..MotDePasse=gsVarMotParsseConnexDecrypt VarTesConn=HOuvreConnexion(MaConnexion)
**** IMPRIME_BON() ServiceTemporise(200)
********* Procedure IMPRIME_BON()
HExécuteRequête(REQ_SELECT_VTE_NON_IMPRIM,hRequêteDéfaut) HLitPremier(REQ_SELECT_VTE_NON_IMPRIM) SI HTrouve(REQ_SELECT_VTE_NON_IMPRIM) ALORS TANTQUE PAS HEnDehors(REQ_SELECT_VTE_NON_IMPRIM) HExécuteRequête(REQ_SELECT_ORDRE_CMDE,hRequêteDéfaut,REQ_SELECT_VTE_NON_IMPRIM.Num_Bl) HLitPremier(REQ_SELECT_ORDRE_CMDE) SI HTrouve(REQ_SELECT_ORDRE_CMDE) ALORS POUR k=1 _À_ gnVarNbreFoisImprimeTickeINI iInitRequêteEtat(ETAT_RECU_PAR_SECTION,REQ_SELECT_VTE_NON_IMPRIM.Num_Bl,REQ_SELECT_ORDRE_CMDE.Serie_DBL,gnVarNumSection) iImprimeEtat(ETAT_RECU_PAR_SECTION) FIN HLitSuivant(REQ_SELECT_ORDRE_CMDE) TANTQUE PAS HEnDehors(REQ_SELECT_ORDRE_CMDE) SI VarSectionImprimableINI=1 ALORS POUR k=1 _À_ gnVarNbreFoisImprimeTickeINI iInitRequêteEtat(ETAT_RECU_PAR_SECTION,REQ_SELECT_VTE_NON_IMPRIM.Num_Bl,REQ_SELECT_ORDRE_CMDE.Serie_DBL,gnVarNumSection) iImprimeEtat(ETAT_RECU_PAR_SECTION) FIN FIN iInitRequêteEtat(ETAT_RECU_PAR_SECTION_CLI,REQ_SELECT_VTE_NON_IMPRIM.Num_Bl,REQ_SELECT_ORDRE_CMDE.Serie_DBL) iImprimeEtat(ETAT_RECU_PAR_SECTION_CLI) HExécuteRequête(REQ_MARQUE_IMPRIM_LIGNE_FACT,hRequêteDéfaut,REQ_SELECT_VTE_NON_IMPRIM.Num_Bl) HLitSuivant(REQ_SELECT_ORDRE_CMDE) FIN FIN HExécuteRequête(REQ_MARQUE_FACTURE_IMPRIM,hRequêteDéfaut,REQ_SELECT_VTE_NON_IMPRIM.Num_Bl) HLitSuivant(REQ_SELECT_VTE_NON_IMPRIM) FIN
FIN
|
| |
| |
| | | |
|
| | |
| |
| Publicado el 07,noviembre 2019 - 10:46 |
Bonjour,
Je ne vais pas résoudre le problème, mais voici quelques conseils :
Ne pas se connecter à la BDD dans l'initialisation du projet. Faire la connexion au lancement de la procédure, et fermer la connexion à la fin. et bien sûr, ne pas lancer l'impression si la connexion échoue. (Sinon, vous laissez une connexion permanente à la BDD, ce qui peut empêcher par exemple, la mise à jour de la structure de la bdd).
A titre perso, pour tout ce qui est dans un service, je mets ça avec un traitement d'exception. (Quand exception dans...faire...fin). Et pour toute exception, je m'envoie une alerte de l'exception. Un service ne supporte aucun plantage!
Il faut aussi tester les résultat des requêtes avant d'enclencher les lectures. Si hexecuterequete(…)=vrai alors |
| |
| |
| | | |
|
| | | | |
| | |
|