Fonctions dates : exemple
Les fonctions date de FileMaker Pro ne sont pas très compliquées à comprendre ( par exemple, Mois(date) risque fort de rendre le mois d'une date...), aussi plongeons-nous avec délectation dans des exemples concrets, en nous plaçant dans notre fichier exemple sur notre OT "à tout faire", PAR__.
Date du jourIl existe une fonction d'obtention largement utilisée par les manipulateurs de dates : Obtenir(DateActuelle), en d'autres mots : la date du jour (enfin, si la date système de votre ordinateur est à jour), qui sera rendue. Règle générale avec cette fonction : ne pas mémoriser, si possible, car elle doit être ré-évaluée le plus souvent possible... Amusons-nous : on veut obtenir le nom du jour et la date du jour sur notre modèle PAR_Menu. Ca fera joli lorsqu'on ouvrira l'application ! Pour ce faire, on utilise la fonction NomJour(), qui donne, comme son nom l'indique, le nom du jour de la date concernée, sous forme de texte. Le calcul est assez simple (on crée la nouvelle rubrique Z_DateDuJour après s'être positionné sur PAR_Tech, évidemment) :
Soit en langage plus courant : le nom du jour de la date obtenue à l'ouverture du fichier, & une espace (" ") et la date actuelle, à l'ouverture du fichier. Le résultat est du texte et dans autres options, on a bien précisé de ne pas mémoriser le calcul. On place la rubrique sur le modèle PAR_Menu, en haut à gauche, sans titre, sans couleur de fond, sans effet et sans épaisseur de trait. On étend la rubrique suffisamment pour que le texte apparaisse en entier. Calcul sur les datesOn monte d'un cran... Maintenant, on veut obtenir, de manière dynamique bien sûr, la date du lundi de la semaine en cours sur notre modèle PAR_Menu. Ici, on a un VRAI souci : Filemaker Pro est un logiciel américain, et le premier jour de la semaine, celui qui porte le n° 1, est le dimanche (et non le lundi) ! Donc, le lundi porte le n° 2... On va se faire un petit tableau afin d'y comprendre quelque chose et d'en déduire une formule : quelle valeur devons-nous retirer à une date quelconque pour obtenir son lundi correspondant ? (en fait comment obtenir le jour 2 de la semaine en cours en partant de n'importe quel jour)
On peut donc conclure deux choses de ce tableau :
On a donc 2 cas. Comme on est malin, on va certainement utiliser la fonction Cas() quelque part... Pour établir notre calcul, utilisons la fonction Définir(), pour plus de clarté. On établira une variable appelée "Valeur", qui sera la valeur à retirer. Une autre variable sera tout simplement "lundi", qui est notre date recherchée. Une fonction date de FileMaker Pro, appelée JourSemaine, permet d'obtenir ce fameux n° de jour (dont, rappelons-le, le n° 1 est le dimanche) : Donc, les 2 cas de Valeur :
Lorsqu'on a cette fameuse valeur à soustraire, ben, on la soustrait à aujourd'hui... Donc la valeur de lundi est Obtenir(DateActuelle) - Valeur Le calcul final est simplement la variable Lundi, c'est tout. Donc, quelle que soit la date d'aujourd'hui, ce calcul nous permet de toujours obtenir le lundi correspondant, soit le premier jour ouvrable de la semaine en cours. Si on place notre calcul dans une rubrique z_LundiCourant (sur la table PAR__Parametres, calcul non mémorisé dont le résultat sera ici... une date) et qu'on place cette rubrique sur le modèle PAR_Menu, derrière une étiquette texte "date du lundi : ", voilà ce que ça donne : Vous n'avez pas tout capté ? Ce n'est pas grave, on continue ! Embryon d'agendaVendrediOn a déjà le lundi ! Le but est finalement qu'apparaisse sur notre modèle PAR_Menu Semaine du lundi xx/xx/xxxx au vendredi yy/yy/xxxx, de manière dynamique. Donc, il nous reste à calculer le vendredi... Nous allons nous baser sur le même type de raisonnement :
Courage, allons-y ! Et on se rappellera que le vendredi porte le n° 6...
Une fois de plus, le souci vient du dimanche. Nos deux cas deviennent :
Sur le même schéma que pour le lundi, notre calcul devient : On place ce calcul dans une rubrique calculée, résultat date, z_VendrediCourant, et on place le lundi et le vendredi dans une zone texte avec des rubriques de fusion, sur notre modèle PAR_Menu. Si on continue le raisonnement pour tous les jours ouverts de la semaine, on établira ainsi 5 calculs qui fourniront successivement le lundi courant, le mardi courant, le mercredi courant, le jeudi courant et le vendredi courant. Imaginons maintenant que l'on a une table de tâches, très simple, avec deux rubriques : la date de la tâche et la description de la tâche, rien de plus (en dehors, bien sûr, des rubriques obligatoires...). Dès lors, on peut établir 5 liens, depuis chacune des rubriques calculées z_LundiCourant, z_mardiCourant, etc., vers la date de la table des tâches. Si, en dessous des 5 rubriques de dates, mises bout à bout, on construit 5 Tables Externes avec la description des tâches, une par lien, on obtiendrait un embryon d'agenda, fort simple, ressemblant à ceci : Bien sûr, ce n'est pas encore un planning complet, mais ça commence à y ressembler ! D'ailleurs, si vous souhaitez le mettre en place dans notre fichier exemple, il est là pour cela.
|