PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Trier ressources champ Planning par programmation
Trier ressources champ Planning par programmation
Iniciado por Alouije, 03,jun. 2019 16:11 - 4 respuestas
Miembro registrado
5 mensajes
Publicado el 03,junio 2019 - 16:11
Bonjour à tous,

Je remplis un champ Planning par programmation en fonction de salariés et de tâches à effectuer, ci-dessous le code :

PROCÉDURE AffichePlanning()
// Variables
tmpRDV est un RendezVous

// Réinitialise
PlanningSupprimeTout(PLN_PRINCIPALE)

POUR TOUT TACHE


HFiltre(Salarié,IDSalarié,TACHE.IDSalarié)
HLitPremier(Salarié)
PlanningAjouteRessource(PLN_PRINCIPALE,Salarié.NomPrénom + gLien(TACHE.IDSalarié))

HFiltre(Commande,IDCommande,TACHE.IDCommande)
HLitPremier(Commande)


HFiltre(TypeTache,IDTypeTache,TACHE.IDTypeTache)
HLitPremier(TypeTache)


// Ajout de la plage
tmpRDV.ID = TACHE.IDTACHE
tmpRDV.Ressource = TACHE.IDSalarié
tmpRDV.Titre = TACHE.LIBTACHE
tmpRDV.DateDébut = TACHE.DATEDEBUT
tmpRDV.DateFin = TACHE.DATEFIN
tmpRDV.Catégorie = TypeTache.TypeTache
tmpRDV.Contenu = TACHE.CONTENUTACHE
tmpRDV.Bulle = TACHE.LIBTACHE
tmpRDV.CouleurFond = TypeTache.COULTYPE
tmpRDV.Note = TACHE.IDTACHE
tmpRDV.JournéeEntière = TACHE.JOURENTIER

PlanningAjouteRendezVous(PLN_PRINCIPALE,tmpRDV)

FIN

HDésactiveFiltre(TypeTache)
HDésactiveFiltre(Commande)
HDésactiveFiltre(TACHE)
HDésactiveFiltre(Salarié)


Ce que je souhaite c'est trier les salariés (ressources) par nom. j'ai l'impression que par défaut il utilise idsalarié.

Merci beaucoup pour votre aide...

Alouije
Miembro registrado
116 mensajes
Publicado el 04,junio 2019 - 07:36
Bonjour,

Les ressources sont affichées dans l'ordre où elles sont ajoutées.

Dans ton cas tu parcours le fichier Salarié sur la rubrique IDSalarié.

Donc si tu veux que l'ordre des ressources de ton planning soit le nom des agents il faut parcourir le fichier sur la rubrique NomPrénom.

Bon courage
Publicado el 04,junio 2019 - 11:50
Alouije avait soumis l'idée :
Bonjour à tous,

Je remplis un champ Planning par programmation en fonction de salariés et de
tâches à effectuer, ci-dessous le code :

PROCÉDURE AffichePlanning()
// Variables
tmpRDV est un RendezVous

// Réinitialise
PlanningSupprimeTout(PLN_PRINCIPALE)

POUR TOUT TACHE


HFiltre(Salarié,IDSalarié,TACHE.IDSalarié)
HLitPremier(Salarié)
PlanningAjouteRessource(PLN_PRINCIPALE,Salarié.NomPrénom +
gLien(TACHE.IDSalarié))

HFiltre(Commande,IDCommande,TACHE.IDCommande)
HLitPremier(Commande)


HFiltre(TypeTache,IDTypeTache,TACHE.IDTypeTache)
HLitPremier(TypeTache)


// Ajout de la plage
tmpRDV.ID = TACHE.IDTACHE
tmpRDV.Ressource = TACHE.IDSalarié
tmpRDV.Titre = TACHE.LIBTACHE
tmpRDV.DateDébut = TACHE.DATEDEBUT
tmpRDV.DateFin = TACHE.DATEFIN
tmpRDV.Catégorie = TypeTache.TypeTache
tmpRDV.Contenu = TACHE.CONTENUTACHE
tmpRDV.Bulle = TACHE.LIBTACHE
tmpRDV.CouleurFond = TypeTache.COULTYPE
tmpRDV.Note = TACHE.IDTACHE
tmpRDV.JournéeEntière = TACHE.JOURENTIER

PlanningAjouteRendezVous(PLN_PRINCIPALE,tmpRDV)

FIN

HDésactiveFiltre(TypeTache)
HDésactiveFiltre(Commande)
HDésactiveFiltre(TACHE)
HDésactiveFiltre(Salarié)


Ce que je souhaite c'est trier les salariés (ressources) par nom. j'ai
l'impression que par défaut il utilise idsalarié.

Merci beaucoup pour votre aide...

Alouije


bonjour,

pour commencer les exemples d'utilisation des fonctions contenues dans
l'aide ne sont pas là juste pour faire joli !!!

HFiltre(...)
HLitPremier(...)
==> SI PAS HEnDehors(...) ALORS <== très important

ensuite vous parcourez des tâches pour ajouter des salariés en
effectuant un filtre selon leur ID, votre parcours des tâches se fait
sans même effectuer de tri, si vous avez 2 tâches pour un même salarié
(1er et 10ème enreg du fichier par exemple) vous allez vous retrouvez
avec 2 ressources identique au lieu d'une seule enfin il me semble à
moins que que vous vouliez 2 ressources

étant donné que vous allez récupérer des infos dans plusieurs fichiers
et que vous voulez un tri spécifique je pense qu'un requête serait plus
adapté

ou alors je n'ai pas tout compris et j'ai répondu à côté de votre
demande

--
Cordialement JeAn-PhI
Miembro registrado
5 mensajes
Publicado el 04,junio 2019 - 20:33
Il faudrait que je fasse un requête sur les taches c'est bien ça ?

Effectivement l'appli n'affiche pas les 2 ressources mais dans le code il y a un sens interdit avec un message qui décrit bien que la ressource existe déjà.

jérémy
Miembro registrado
4.362 mensajes
Publicado el 05,junio 2019 - 12:49
Bonjour,
C'est en effet la solution la plus simple. Elle devrait ressembler plus ou moins à cela :
SELECT
Tache.PK_Tache AS PK_Tache,
Tache.NDX_NomTache AS NDX_NomTache,
TypeTache.NDX_TypeDeTache AS NDX_TypeDeTache,
Commande.AK_NoCommande AS AK_NoCommande,
( ( Salarie.NDX_PrenomSalarie + ' ') + Salarie.NDX_NomSalarie ) AS PrenomNom,
Tache.FK_TypeTache AS FK_TypeTache
//On inclura ici les rubriques nécessaires au RDV
FROM
Commande,
Tache,
Salarie,
TypeTache
WHERE
TypeTache.PK_TypeTache = Tache.FK_TypeTache
AND Salarie.PK_Salarie = Tache.FK_Salarie
AND Commande.PK_Commande = Tache.FK_Commande
AND
(
Tache.FK_Commande = {pCommande}
AND Tache.FK_Salarie = {pSalarie}
AND Tache.FK_TypeTache = {pTypeTache}
)
ORDER BY
PrenomNom ASC


De plus, les filtres deviennent inutiles, il suffit de passer les enregistrements recherchés en paramètre

--
Il y a peut être plus simple, mais, ça tourne
Mensaje modificado, 05,junio 2019 - 12:49