Changements récents - Rechercher:

Tutoriel Filemaker

  1. Structure
  2. Modèles
  3. Opérations diverses
  4. Calculs
  5. Scripts
  6. Privilèges d'accès

Filemaker avancé

  1. Partage des données
  2. Astuces et Exemples
  3. Développement

Règles de nommage

Versions de FileMaker Pro

Liens utiles Contact Commentaires

edit SideBar

Fonctions dates : exemple

<==Flags de doublons ^ Calculs Fonctions d'obtention==>

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 jour
Calcul sur les dates
Embryon d'agenda




Date du jour


Il 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) :

NomJour ( Obtenir ( DateActuelle))
& " " &
Obtenir(DateActuelle)

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 dates


On 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)

Jour Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche
N° du jour 2 3 4 5 6 7 1
Valeur à

retirer

0

(2-2)

1

(3-2)

2

(4-2)

3

(5-2)

4

(6-2)

5

(7-2)

6

(1-2)+7

On peut donc conclure deux choses de ce tableau :

  • On déduit une formule simple pour 6 jours sur 7 : Il faut retirer à son n° de jour une valeur égale à : (son n° de jour - 2). Par exemple, le jeudi porte le n° 5 : il faut retirer à 5 la valeur (5-2)=3. Donc, 5 - 3 = 2, qui est bien le n° du lundi. Re-donc, si on retire à la date dudit jeudi une valeur de 3, on tombe bien sur la date du lundi correspondant. Si vous n'avez toujours pas compris, on continue en Japonais...
  • Pour le dimanche, ça ne marche pas. En effet, on tomberait sur le lundi qui suit, et non le lundi précédent. Il faut ici retirer -2+7, soit 5.

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 :

  • On est dimanche. Donc, JourSemaine(Obtenir(DateActuelle)) (soit JourSemaine d'aujourd'hui, dimanche) vaut 1. Donc, la valeur à soustraine est égale à 5, on l'a dit : on l'écrit...
  • On n'est pas dimanche. Donc, pour obtenir la valeur à soustraire à la date d'aujourd'hui, il faut retirer 2 à JourSemaine d'aujourd'hui, soit JourSemaine(Obtenir(DateActuelle)) - 2

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'agenda


Vendredi

On 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 :

  • Faire le tableau
  • Établir la formule de la valeur à retirer/ajouter
  • Faire le calcul
  • Placer sur le modèle

Courage, allons-y ! Et on se rappellera que le vendredi porte le n° 6...

Jour Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche
N° du jour 2 3 4 5 6 7 1
Valeur à

ajouter

4

(6-2)

3

(6-3)

2

(6-4)

1

(6-5)

0

(6-6)

-1

(6-7)

-2

(6-1-7)

Une fois de plus, le souci vient du dimanche. Nos deux cas deviennent :

  • Le jour est un dimanche : la valeur à ajouter est -2
  • Le jour n'est pas un dimanche : la valeur à ajouter est 6 - JourSemaine

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.

<==Flags de doublons ^ Calculs Fonctions d'obtention==>
Éditer - Historique - Imprimer - Changements récents - Rechercher
Page mise à jour le 22 novembre 2017 à 04h39