PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2024 → Champ Planning
Champ Planning
Iniciado por Brechet, 24,may. 2017 16:47 - 8 respuestas
Publicado el 24,mayo 2017 - 16:47
Bonjour, Actuellement en stage pour un société de robotique industrielle, je suis chargé de mettre en place un planning permettant de gérer les différent chantiers. Etant seul en charge de ce projet et novice dans la connaissance du Wlangague je me confie à vous pour m'aider.
voila le code...
Procedure AfficherPlanning()

tmpRDV est un RendezVous

//Initialise le planning
PlanningSupprimeTout(PLN_MISSION)

//recherche du 1ère employe
HLitRecherchePremier(EMPLOYE,IDEMPLOYE,EMPLOYE.IDEMPLOYE)

//boucle sur les employés
TANTQUE PAS HEnDehors(EMPLOYE) = Vrai

HFiltre(MISSION,IDEMPLOYE,EMPLOYE.IDEMPLOYE) //filtre les informations des missions par rapport a l'employé
HLitPremier(MISSION)

SI HTrouve(MISSION) ALORS

PlanningAjouteRessource(PLN_MISSION,EMPLOYE.NOMEMPLOYE + gLien(EMPLOYE.IDEMPLOYE)) // ajoute l'employé son nom et son id

TANTQUE PAS HEnDehors(MISSION)
HFiltre(CHANTIER,IDCHANTIER,MISSION.IDCHANTIER)
HLitPremier(CHANTIER)

HFiltre(TYPEMISSION,IDTYPEMISSION,MISSION.IDTYPEMISSION)
HLitPremier(TYPEMISSION)

tmpRDV.Ressource = MISSION.IDEMPLOYE
tmpRDV.Titre = CHANTIER.CLTFINALCHANTIER
tmpRDV.DateDébut = MISSION.DEBUTMISSION
tmpRDV.DateFin = MISSION.FINMISSION
tmpRDV.Catégorie = TYPEMISSION.LIBELLETYPE
tmpRDV.Contenu = MISSION.CONTENUMISSION
tmpRDV.CouleurFond = CHANTIER.COULCHANTIER
tmpRDV.Note = MISSION.IDMISSION
tmpRDV.Lieu = CHANTIER.LIEUCLTSS
tmpRDV.Bulle = TYPEMISSION.CONTENUTYPE + " - " + CHANTIER.COMCHANTIER
tmpRDV.JournéeEntière = MISSION.JOURNEEMISSION
PlanningAjouteRendezVous(PLN_MISSION,tmpRDV)

HLitSuivant(MISSION)

FIN
SINON
HLitRecherche(EMPLOYE,IDEMPLOYE,EMPLOYE.IDEMPLOYE)
SI HTrouve() ALORS
HLitRecherche(COMPETENCE_EMPLOYE,IDEMPLOYE,EMPLOYE.IDEMPLOYE)
// Ajout de la personne dans le planning alors qu'elle n'a pas de tâches sur la période
PlanningAjouteRessource(PLN_MISSION,EMPLOYE.NOMEMPLOYE + gLien(EMPLOYE.IDEMPLOYE))
FIN
FIN

HLitSuivant(EMPLOYE)

FIN


HDésactiveFiltre(MISSION)
HDésactiveFiltre(EMPLOYE)
HDésactiveFiltre(CHANTIER)
HDésactiveFiltre(TYPEMISSION)
HDésactiveFiltre(COMPETENCE_EMPLOYE)


voila le problème.....
le code suivant me renvoie une erreur à la ligne "HDésactiveFiltre(CHANTIER)"et ainsi de suite. Si je passe ces erreurs, le planning s'affiche normalement.. Pouvez-vous m'aidez ? car je suis seul sur ce coup la ;(

Quel est le problème ? es que mon approche est bonne ?
Miembro registrado
33 mensajes
Popularité : +1 (1 vote)
Publicado el 24,mayo 2017 - 17:06
Bonjour,

Tu te trouves dans des boucles.
Avant de pouvoir faire un nouveau filtre, tu dois d'abord désactiver le précédent.
Voir l'aide sur le HFiltre

--
BàV
Romuald
Miembro registrado
1.923 mensajes
Popularité : +53 (65 votes)
Publicado el 24,mayo 2017 - 18:51
Bonjour,

Cette programmation est "archaïque" ;-).
Utilise des POUR TOUT avec filtre.
Voir https://doc.pcsoft.fr/fr-FR/?1510013&name=POUR_TOUS

--
Bon dev,
Jean-Pierre
Mensaje modificado, 24,mayo 2017 - 18:52
Publicado el 24,mayo 2017 - 20:56
Bonjour,

le code suivant me renvoie une erreur à la ligne
"HDésactiveFiltre(CHANTIER)"et ainsi de suite. Si je passe ces erreurs,
le planning s'affiche normalement.. Pouvez-vous m'aidez ? car je suis
seul sur ce coup la ;(

nous montrer le code, c'est bien

Nous donner AUSSI le message d'erreur complet, ca serait beaucoup mieux

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com
Publicado el 25,mayo 2017 - 01:39
Pour moi, le code me paraît très bien. Peut-être pas à la dernière mode, mais ce n'est vraiment pas un problème.
Quel est le message d'erreur, c'est effectivement la question essentielle. Et sinon, je ne sais pas si c'est une illusion d'optique, mais j'ai l'impression que les lignes chantier.xxx sont d'une couleur différente par rapport à mission.xxx ou typeMission.xxx. Est-ce que tu le confirmes, et si oui, c'est peut-être une piste.
Publicado el 29,mayo 2017 - 10:16
ReBonjour,

Merci a tous pour vos réponse, j'ai retravaillé le code afin qu'il soit plus lisible, Utilisé les fonctions POUR TOUT et désactivé les filtres au bon moment (enfin je pense) j'ai toujours un problème, -> un flèche de renvoie en fin de code <-

Procedure AfficherPlanning()

tmpRDV est un RendezVous

PlanningSupprimeTout(PLN_MISSION)

HLitRecherchePremier(EMPLOYE,IDEMPLOYE,EMPLOYE.IDEMPLOYE)

POUR TOUT EMPLOYE SUR IDEMPLOYE

PlanningAjouteRessource(PLN_MISSION,EMPLOYE.NOMEMPLOYE + gLien(EMPLOYE.IDEMPLOYE))

HFiltre(MISSION,IDEMPLOYE,EMPLOYE.IDEMPLOYE)
HLitPremier(MISSION)

POUR TOUT MISSION AVEC MISSION.IDEMPLOYE=EMPLOYE.IDEMPLOYE

HFiltre(CHANTIER,IDCHANTIER,MISSION.IDCHANTIER)
HLitPremier(CHANTIER)

HFiltre(TYPEMISSION,IDTYPEMISSION,MISSION.IDTYPEMISSION)
HLitPremier(TYPEMISSION)

tmpRDV.Ressource = MISSION.IDEMPLOYE
tmpRDV.Titre = CHANTIER.CLTFINALCHANTIER
tmpRDV.DateDébut = MISSION.DEBUTMISSION
tmpRDV.DateFin = MISSION.FINMISSION
tmpRDV.Catégorie = TYPEMISSION.LIBELLETYPE
tmpRDV.Contenu = MISSION.CONTENUMISSION
tmpRDV.CouleurFond = CHANTIER.COULCHANTIER
tmpRDV.Note = MISSION.IDMISSION
tmpRDV.Lieu = CHANTIER.LIEUCLTSS
tmpRDV.Bulle = TYPEMISSION.CONTENUTYPE + " - " + CHANTIER.COMCHANTIER
tmpRDV.JournéeEntière = MISSION.JOURNEEMISSION
PlanningAjouteRendezVous(PLN_MISSION,tmpRDV)

HDésactiveFiltre(CHANTIER)
HDésactiveFiltre(TYPEMISSION)

FIN
HDésactiveFiltre(MISSION)
FIN

<- (c'est ici que la flèche de renvoie apparaît)


je n'es pas de différence entre le couleur (chantier.xxx, typemission.xxx) directement dans le logiciel windev, c'est différences sont liées au forum (peux être)... et je n'es aucune Erreur de compilation écrite... et le Herreur() me renvoie 0. je retravaille les différents éléments liées à mon planning en espérant que ce ne soit pas ça le problème...

Merci de prendre un peu de vôtre temps pour aider un pauvre stagiaire... :D

Cordialement.

Sully..
Miembro registrado
58 mensajes
Popularité : +3 (3 votes)
Publicado el 02,junio 2017 - 15:12
Bonjour à tous,

je rencontre un bug de la fonction PlanningSupprimeRendezVous() (je vais détailler plus bas), j'ai ouvert un ticket au support PCSoft, mais j'aimerai savoir si vous auriez des idées pour contourner le problème.

J'ai un champ PLANNING avec deux ressources :
- L'une pour la planification de production
- L'autre pour la disponibilité de la machine

Quand je positionne une production, je souhaite supprimer l'équivalent de disponibilité sur la 2nde ressource.

J'ai donc une boucle qui parcourt toutes mes productions à positionner.

Au 1ier tour de la boucle, aucun problème : ma production est positionnée sur la 1ière ressource et l'équivalent est supprimé sur la 2nde ressource.
Toutes les boucles suivantes, la suppression de rendezvous ne fonctionne plus. J'ai vérifié, c'est pas un bug du code, j'ai même tenté de simplement supprimer les rendezvous à la main, et le code suivant bugue :


PlanningSupprimeRendezVous(PLN_WorkordersJour, 12)
PlanningSupprimeRendezVous(PLN_WorkordersJour, 15)
PlanningSupprimeRendezVous(PLN_WorkordersJour, 18)

Le rendezvous 12 est bien supprimé, mais pas les autres.


Est-ce que vous connaissez un moyen de contourner ce problème ?
Je pense par exemple à une méthode pour accéder aux rendez-vous genre MonChampPlanning.MonRDV[12]

Je suis preneur de toute idée, car là je suis complètement bloqué.

merci
Miembro registrado
282 mensajes
Popularité : +1 (1 vote)
Publicado el 07,junio 2017 - 06:20
Bonjour,

peut-être devriez-vous commencer par la fin?
Cordialement,

--
Christophe Charron
Miembro registrado
90 mensajes
Popularité : +7 (11 votes)
Publicado el 07,junio 2017 - 08:14
à mon avis, déjà, éviter les hfiltre

c'est tout sauf pratique