PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WEBDEV 2024 → affichage d'un champ combo par cham date
affichage d'un champ combo par cham date
Iniciado por severine zerque, abr., 19 2021 9:03 AM - 4 respostas
Membro registado
2 mensagems
Publicado em abril, 19 2021 - 9:03 AM
Bonjour,:)

j'ai un champ date et n champ combo,
je souhaite qu'en fonction de la date sélectionnée le champ combo affiche une donnée précise.

je m'explique :
si la date sélectionné est de + de 2 ans par rapport à la date du jour, le champ combo affiche une donnée
si la date sélectionnée est de + d' 1 an par rapport à la date du jour, le champ combo affiche une autre donnée
si la date sélectionnée est de - de 8 mois par rapport à la date du jour, le champ combo affiche une troisième donnée
si le date sélectionnée est comprise entre 8 à 12 mois par rapport à la date du jour, le champ combo affiche une quatrième donnée
si non, il ne reste visisble dans le champ combo que deux donnée possiblie.

pour l'instant mon champ combo affiche les six données possible, mais je voudrais donc qu'il affiche automatique la bonne donnée en fonction de la date.

merci beaucoup pour votre aide, j'avaoue que je débute en webdev, et que j'ai un peu de mal pour cette partie malgré mais recherche.
Membro registado
3.846 mensagems
Popularité : +227 (347 votes)
Publicado em abril, 19 2021 - 10:52 AM
Bonjour,
Il faut te tourner ver la fonction DateDifférence et la variable de type durée

FONCTION DonnéeAffichée(dDateSaisie est Date) :chaîne
//Les années sont arrondie à 365 j
//Le mois durent 30 jours

SELON DateDifference(dDateSaisie,DateDuJour())
CAS >=730
RENVOYER "Supérieur à 2 ans"
CAS 365<=*<730
RENVOYER "Compris entre 1 et 2 ans"
CAS 240<=*<365
RENVOYER "Entre 8 mois et 1 an"
CAS 0<=*<240
RENVOYER "Inférieur à 8 mois"
AUTRE CAS
//A priori ce ca ne survient que dans le cas ou la date saisie est postérieure à la date du jour
RENVOYER ChaîneConstruit("Valeur 1%1Valeur 2",CRLF)
FIN


Procedure AfficherCombo(chCombo est Champ,sValeurCombo est chaîne)
ListeSupprimeTout(chCombo)

ListeAjoute(chCombo,sValeurCombo)
chCombo=1


Exemple d'utilisation
dMaDate est Date

dMaDate=SAI_Date
AfficherCombo(COMBO_Résultat,DonnéeAffichée(dMaDate))


--
Il y a peut être plus simple, mais, ça tourne
Membro registado
2 mensagems
Publicado em abril, 19 2021 - 12:04 PM
super merci beaucoup,
je vais tester ça :)
Publicado em abril, 20 2021 - 3:46 PM
bonjour, je suis en plein test, cependant j'aurais une question :

pour la procédure, je suppode en procédure local serveur ?
pour l'appel de procédure dans mon champ combo
mais pour la fonction, pouvez vous me dire où dois la placé ?? dans l'iminitialisation de la combo ??
Membro registado
3.846 mensagems
Popularité : +227 (347 votes)
Publicado em abril, 21 2021 - 5:58 PM
severine zerque a écrit :
mais pour la fonction, pouvez vous me dire où dois la placé ??

La réponse est dans l'intitulé de la question initiale je pense :
severine zerque a écrit :
je souhaite qu'en fonction de la date sélectionnée le champ combo affiche une donnée précise.

En lisant cela j'appellerais ma procédure en sortie de SAI_Date.

En ce qui concerne le type de procédure (Serveur/Navigateur.)
Dans l'absolu si le serveur n'a pas besoin d'avoir accès aux données traitées, moins il travaille mieux il se porte. Par ailleurs "En sortie de champ" est "Navigateur".

Toutefois nous allons être confrontés à un petit problème.
Les variable de type champ (et les indirections) sont propre au code "Serveur"
2 solutions :
-Mettre le nom de la combo "en dur" et coder en "Navigateur"
-Coder en "Serveur" en activant le mode AJAX et appeler la procédure et la fonction via AJAX exécute

--
Il y a peut être plus simple, mais, ça tourne