• Annonces

    • Olivier Devriese

      Nouveauté du forum, les blogs !   30/04/2016

      Envie de créer votre blog FileMaker ? Ca ne peut pas être plus simple qu'avec cette nouvelle section du site FM Source qui est désormais plus qu'un simple forum mais un vrai centre de ressource. Vous pouvez aussi facilement l'alimenter en le liant avec le flux RSS d'un autre blog que vous possédez déjà.
  • billets
    69
  • commentaires
    9
  • vues
    2 457

À propos de ce blog

Développeur certifié, formateur agréé, depuis vingt ans j'ai acquis une expérience dans le monde FileMaker et l'XML. Je me propose ici de distiller ce savoir accumulé et vous le faire partager.

Les commentaires sont bien évidemment les bienvenus…

 

David Julot
Développeur senior FileMaker et Formateur au sein de Lesterius
Développeur FileMaker certifié 7 à 14

Lesterius_logo_tagline.png

Billets dans ce blog

David Julot

fm-infographicp.jpgLa saga FileMaker en une infographie…

CoreSolutions Software, Inc. via son blog, nous présente toute l'histoire de FileMaker résumée en une infographie. Pour les nostalgiques comme moi cela permet de nous remémorer les dates clefs de notre logiciel préféré…

  • 1987 - Naissance de Claris
  • 1988 - FileMaker II
    • première version à être éditée par Claris Corp.
  • 1990 - FileMaker Pro
  • 1992 - FileMaker Pro 2
    • signe la première version pour Windows
  • 1994 - FileMaker Pro Server
  • 1995 - FileMaker 3
    • architecture relationnelle
    • protocole réseau TCP/IP
  • 1997 - FileMaker 4
    • ouverture aux plugins
  • 1998 - FileMaker Pro 4 Developer Edition
    • dernière édition par Claris Corp.
    • Claris Corp. devient FileMaker, Inc.
  • 1999 - FileMaker Pro 4.1v2
    • première édition par FileMaker, Inc.
  • 1999 - FileMaker Pro 5
  • 2002 - FileMaker 6
    • dernière version à supporter Mac OS 9 et 8
  • 2004 - FileMaker Pro 7
    • multi-tables
    • multi-fenêtres
    • graphe de liens
    • variables dans les formules de calcul
    • nouvelle sécurité
    • nouveau format de fichier
  • 2005 - FileMaker 8
    • génération PDF scriptable
    • variables dans les scripts
    • panneaux à onglet
  • 2007 - FileMaker 9
    • support des sources de données MS SQL Server, MySQL et Oracle
    • formatage conditionnel
  • 2008 - Bento
  • 2009 - FileMaker 10
    • changement d'orientation de la zone d'état (verticale) qui devient barre d'outils (horizontale)
    • déclencheurs de script
  • 2010 - FileMaker Go 1.0
  • 2010 - FileMaker 11
    • outil Graphique
    • lien snapshot
    • tables externes filtrées
    • importations récurrentes
  • 2012 - FileMaker Pro 12 et FileMaker Pro 12 Advanced
    • thèmes
    • fenêtres de type modale et document
    • fonction ExecuterSQL
    • amélioration des rubriques de type conteneur et des graphiques
  • 2013 - FileMaker 13
    • WebDirect et support du HTML 5
    • développement de solution mobile amélioré
    • conception d'interface graphique améliorée
    • action pour exécuter des scripts par le serveur
    • connexion SSL 256 bit
  • 2015 - FileMaker 14
    • espace de travail de script
    • barre de boutons
    • infobulles pour les badges en mode modèle, et Gestion des solutions
  • 2016 - FileMaker 15

Retrouver l'infographie en haute résolution directement depuis le billet du blog «Core FileMaker Blog» par Steve Malott.

Et puisque je suis nostalgique, je ne peux résister à l'envie de vous montrer quelques ouvrages qui trainent encore sur mon bureau... Cela rappellera des bons souvenirs à certaines personnes :rolleyes:

Fichier 09-06-2016 23 19 57.jpeg

David Julot

La semaine dernière j'ai repassé en revue les critères de recherche pour retrouver une donnée ou un extrait de donnée contenue dans une rubrique. Mais le moteur de recherche de FileMaker propose des outils supplémentaires pour nous permettre d'effectuer des recherches plus complexe...

Avant de poursuivre, je vous incite à lire ou relire mon billet de la semaine dernière »

 

La recherche multicritère

La recherche multicritère consiste comme son nom l'indique à effectuer une recherche avec plusieurs critères. Et comme nous utilisons un programme informatique pour la gestion de nos données, nous allons voir les trois opérateurs booléens de base : ETOU et NON. Pour rappel :

  • ET : la fonction booléenne préférée des enfants : «je veux le bonbon et le jouet !» ;
  • OU : la fonction booléenne préférée des parents :  «non tu auras le bonbon ou le jouet !», si le parent précise «mais pas les deux !» c'est alors un OU Exclusif (XOR en anglais) ;
  • NON  la fonction booléenne préférée du tyrannique rédacteur en chef de Polite, le patron qui dit « NON » (cf. Achille Talon)... ou de tout parent ;-)

 

La recherche ET

La recherche la plus courante et la plus naturelle dans FileMaker, puisque cela correspond à rechercher des enregistrements dont plusieurs rubriques contiennent les critères souhaités. Par exemple si nous souhaitons rechercher tous contacts ayant un numéro de téléphone et habitant Paris nous devrons effectuer la recherche suivante :

  1. On se met en mode recherche :
    • par la barre de menu : Affichage > Mode Recherche ;
    • par raccourcis clavier sur Mac : cmd + F ;
    • par raccourcis clavier sur Windows : ctrl + F ;
  2. On met * dans la rubrique téléphone ;
  3. On met Paris dans la rubrique ville ;
  4. On exécute la recherche.

Si nous automatisons ce type de recherche nous obtenons le script suivant :

Mode recherche [Pause: Non]
Définir rubrique [Contacts::Téléphone ; "*"]
Définir rubrique [Contacts::Ville ; "Paris"]
Exécuter la recherche []

La recherche OU

La recherche la moins courante et la moins naturelle dans FileMaker, car la moins intuitive. La recherche de type OU correspond généralement à la recherche de plusieurs critères dans la même rubrique. Par exemple si nous souhaitons rechercher tous les contacts habitant Paris ou Rouen nous devrons effectuer la recherche suivante :

  1. On se met en mode recherche :
    • par la barre de menu : Affichage > Mode Recherche ;
    • par raccourcis clavier sur Mac : cmd + F ;
    • par raccourcis clavier sur Windows : ctrl + F ;
  2. On met Paris dans la rubrique ville ;
  3. On crée une deuxième requête :
    • par la barre de menu : Requêtes > Nouvelle requête ;
    • par raccourcis clavier sur Mac : cmd + N ;
    • par raccourcis clavier sur Windows : ctrl + N ;
  4. On met Rouen dans la rubrique ville ;
  5. On exécute la recherche.

Si nous souhaitons automatiser cette recherche, nous aurons le script suivant :

Mode recherche [Pause: Non]
Définir rubrique [Contacts::Ville ; "Paris"]
Nouvel enreg./requête
Définir rubrique [Contacts::Ville ; "Rouen"]
Exécuter la recherche []

Le fait de créer des requêtes en mode recherche correspond à la fonction booléenne OU. Nous ne sommes pas limité en nombre de requêtes par recherche.

:excl: À la 11e requête, FileMaker Pro affiche un message d'alerte pour vous signaler que vous êtes en mode recherche et non en mode utilisation, dans le cas où vous vous seriez trompé de mode. Il faut donc valider le message si vous souhaitez ajouter des requêtes. Ce message n'apparaît évidemment pas si la recherche est automatisé dans un script.

20160515_01.png

 

La recherche NON

C'est une recherche un peut particulière, puisque cela consiste à dire ce que nous ne souhaitons pas pour rechercher ce que nous souhaitons ?! Plus sérieusement, lorsque l'on veut retrouver des enregistrements ne répondant pas à certains critères, on utilise alors l'exclusion de requête. Pour cela :

  1. On se met en mode recherche :
    • par la barre de menu : Affichage > Mode Recherche ;
    • par raccourcis clavier sur Mac : cmd + F ;
    • par raccourcis clavier sur Windows : ctrl + F ;
  2. On sélectionne l'option Exclure de Enregistrements concordants de la barre d'outils ;
  3. On saisi le critère de recherche ;
  4. On exécute la recherche.

20160515_02.gif

Par exemple si nous souhaitons rechercher tous les contacts n'habitant pas Paris nous devrons effectuer la recherche suivante :

  1. On se met en mode recherche :
    • par la barre de menu : Affichage > Mode Recherche ;
    • par raccourcis clavier sur Mac : cmd + F ;
    • par raccourcis clavier sur Windows : ctrl + F ;
  2. On sélectionne l'option Exclure de Enregistrements concordants de la barre d'outils ;
  3. On met Paris dans la rubrique ville ;
  4. On exécute la recherche.

Si nous souhaitons automatiser cette recherche, nous aurons le script suivant :

Mode recherche [Pause: Non]
Ignorer enregistrement
Définir rubrique [Contacts::Ville ; "Paris"]
Exécuter la recherche []

:excl: Si vous avez plusieurs requêtes dans votre recherche, terminez toujours par les requêtes d'exclusion. Par exemple si nous souhaitons rechercher tous les contacts de Paris en excluant ceux habitant le XIIe arrondissement, nous aurons alors la recherche suivante :

  1. On se met en mode recherche :
    • par la barre de menu : Affichage > Mode Recherche ;
    • par raccourcis clavier sur Mac : cmd + F ;
    • par raccourcis clavier sur Windows : ctrl + F ;
  2. On met Paris dans la rubrique ville ;
  3. On crée une deuxième requête :
    • par la barre de menu : Requêtes > Nouvelle requête ;
    • par raccourcis clavier sur Mac : cmd + N ;
    • par raccourcis clavier sur Windows : ctrl + N ;
  4. On sélectionne l'option Exclure de Enregistrements concordants de la barre d'outils ;
  5. On met 75012 dans la rubrique code postal ;
  6. On exécute la recherche.

Si nous souhaitons automatiser cette recherche, nous aurons le script suivant :

Mode recherche [Pause: Non]
Définir rubrique [Contacts::Ville ; "Paris"]
Nouvel enregistrement
Ignorer enregistrement
Définir rubrique [Contacts::Code postal ; "75012"]
Exécuter la recherche []

 

C'est tout pour aujourd'hui

Voilà pour ce deuxième billet sur les fondamentaux de la recherche. Je vous souhaite une excellente fin de journée. N'hésitez pas à apporter vos commentaires. Je vous donne rendez-vous la semaine prochaine…

David Julot

Pour le retour du billet dominical je vais revenir aux fondamentaux : la recherche !

Toute personne utilisant une base de données a le besoin d'effectuer des recherches au sein de ses données, sinon quel serait l'intérêt d'une base de données ?! On l'oublie trop souvent, mais la maîtrise du moteur de recherche d'un Système de Gestion de Bases de Données est primordiale ! Je vous propose donc aujourd'hui de revoir nos classiques pour celles et ceux de la vielle génération comme moi qui gravitons dans le monde FileMakerien depuis plus de 20 ans et pour les «petits» nouveaux qui découvrent ce logiciel fantastique !

 

La recherche

Il y a des recherches simples, des moins simples et des complexes ! Il y a même des recherches qui s'effectuent sans passer par le mode recherche. Mais justement, comment s'effectue une recherche classique dans une base de données FileMaker ? Des quatre modes de FileMaker, il y a celui concernant la recherche :

  • Par la barre de menu Affichage > Mode Recherche ;
  • Par les raccourcis clavier : 
    • Sur Mac OS X : cmd + F ;
    • Sur Windows : ctrl + F

Le principe d'une recherche classique suit trois étapes :

  1. On se met en mode recherche ;
  2. On saisit le critère de recherche ;
  3. On exécute la recherche.

Ce principe s'applique aussi lors de l'automatisation d'une recherche par script. J'oublie de préciser que l'on doit se placer à l'endroit où peuvent se trouver les données recherchées, on doit donc se mettre sur le modèle adéquate.

Lorsque l'on effectue une recherche, FileMaker ne s'amuse pas à passer en revue les enregistrements un à un (joli pléonasme !) pour isoler ceux qui répondent aux critères de recherche. Cela serait très long. FileMaker, comme tout SGBD, utilise l'index pour effectuer des recherches. Il faut donc connaître les règles de l'indexation de FileMaker pour comprendre et savoir effectuer des recherche au sein de sa base de données. Si vous vous êtes amusés à regarder les options de vos rubriques, il y en a une qui concerne la langue d'indexation. Par défaut FileMaker utilise la langue du système d'exploitation, ou des préférences, pour ma part c'est le français qui est utilisé. Voici donc les règles de l'indexation française utilisées par FileMaker Pro :

  • Pas de distinction entre les lettres majuscules et les lettres minuscules : a=A ;
  • Pas de distinction entre les lettres accentuées et les lettres non accentuées : e=é=è=ê=ë, a=à, c=ç, etc. ;
    • Conséquences des deux premières règles : e=E=é=É=è=È=ê=Ê=ë=Ë, a=A=à=À, c=C=ç=Ç
  • FileMaker connaît les lettres ligaturées : ae=æ, oe=œ, ss=ß ;
    • attention FileMaker ne reconnaît pas l'esperluette comme la ligature du e et du t : et≠&
  • L'apostrophe et le trait d'union sont considérés comme des séparateurs de mots, pour le trait d'union uniquement depuis FileMaker 7.

Par défaut, FileMaker indexe les rubriques utilisées :

  • Lors d'une recherche ;
  • Lors d'un tri ;
  • Comme clef de liaison d'un lien relationnel.

:excl: Le type de la rubrique influe sur la recherche, le tri et les relations.

 

Recherche simple

Texte

C'est le type de recherche le plus utilisé, mais encore faut-il connaître quelques astuces. Pour retrouver le nom d'un personne, il suffit de saisir le nom recherché dans la rubrique nom est c'est tout. Mais si nous souhaitons rechercher tous les enregistrements dont la rubrique téléphone est vide ? Il y a quelques opérateurs mis à notre disposition :

  • = : le signe égale placé d'une rubrique en mode recherche permet de retrouver tous les enregistrement dont la rubrique est vide ;
  • : le signe étoile (ou astérisque) utilisé seul dans une rubrique en mode recherche permet de retrouver tous les enregistrements dont la rubrique n'est pas vide ;
    • alors qu'utilisé avec d'autres caractères il remplace zéro, un ou plusieurs caractères :
      • *ER : recherche tous les enregistrements dont la rubrique contient un mot se terminant par ER ;
      • *ER* : recherche tous les enregistrements dont la rubrique contient un mot débutant, contenant ou se terminant par ER ;
      • ER* : recherche tous les enregistrements dont la rubrique contient un mot débutant par ER ;
      • ER : idem que précédemment, recherche tous les enregistrements dont la rubrique contient un mot débutant par ER.
  • @ : remplace un caractère et fixe le nombre de caractère d'un mot recherché :
    • M@R : recherche tous les enregistrements dont la rubrique contient un mot de trois lettres débutant par M et se terminant par R.
    • Si vous souhaitez recherche une adresse électronique, vous devez mettre votre critère entre guillemets : "david@lesterius.com" par exemple, ou saisir l'opérateur d'échappement (terme informatique) par exemple david\@lesterius.com.
  • Pour effectuer une recherche par mots clefs, il suffit de saisir les mots clefs, ou leur début, séparés par des espaces ;
  • Pour rechercher strictement un texte, on le précède d'un double signe égale :
    • ==M : recherche tous les enregistrements dont la rubrique texte contient strictement la lettre M (ne tient pas compte de la casse). Cela ne retrouvera pas les enregistrements dont la rubrique contient par exemple "M.", "", "Mr", etc.
  • Pour rechercher un texte accentué sans tenir compte de la casse, on utilise les guillemets :
    • "légitime" : recherche tous les enregistrements dont la rubrique contient le mot légitime mais ne retrouvera pas le mot légitimé ;
    • "légitimé" : recherche tous les enregistrements dont la rubrique contient le mot légitimé mais ne retrouvera pas le mot légitime.
  • Pour rechercher un opérateur FileMaker Pro en tant que caractère :
    • \@ : recherche le caractère @ ;

Nombre

Pour les nombres nous avons pouvons effectuer les recherches suivantes :

  • 100 : recherche tous les enregistrements dont la rubrique nombre contient le nombre 100 ;
  • Pour rechercher un nombre supérieur ou égale à 100 :
    • 100… : utilise l'opérateur intervalle ;
    • ≥100 : utilise l'opérateur supérieur ou égale à.
  • Pour rechercher un nombre inférieur ou égale à 100 :
    • …100 : utilise l'opérateur intervalle ;
    • ≤100 : utilise l'opérateur inférieur ou égale à.
  • Pour rechercher un nombre compris entre 100 et 199, bornes comprises :
    • ≥100 ≤199 : utilise les opérateurs supérieur ou égale à et inférieur ou égale à et les deux critères sont séparés par l'espace ;
    • 100…199 : plus simple, utilise l'opérateur intervalle ;
    • 1## : plus concis encore, utilise l'opérateur # qui remplace un chiffre inconnu, l'équivalent du pour le texte.
  • Pour recherche un nombre supérieur ou inférieur strictement à 100 :
    • <100 : utilise l'opérateur inférieur à ;
    • >100 : utilise l'opérateur supérieur à.
  • Autre critère de recherche :
    • 1#3# : recherche tous les enregistrements dont la rubrique nombre contenant un nombre de quatre chiffres ayant 1 millier et 3 dizaines quelque soit la centaine et l'unité.

Date

Pour les dates nous pouvons effectuer les recherches suivantes, avec un système paramétré avec les date à la française :

  • Pour rechercher tous les enregistrements dont la date est le 1er mai 2016 :
    • 1/5/2016 : on saisit simplement la date ;
  • Pour la recherche de la date du jour :
    • // : on utilise l'opérateur date du jour.
  • Pour rechercher tous les enregistrements dont la date est comprise entre le 1er janvier 2016 et le 31 décembre 2016, bornes comprises :
    • ≥1/1/2016 ≤31/12/2016 : utilise les opérateurs supérieur ou égale à et inférieur ou égale à et les deux critères sont séparés par l'espace ;
    • 1/1/2016…31/12/2016 : plus simple, utilise l'opérateur intervalle ;
    • */*/2016  : utilise l'opérateur * ;
    • 2016 : encore plus concis, on saisit simplement l'année recherchée.
  • Pour rechercher tous les enregistrements dont la date est comprise entre 1er mai 2016 et le 31 mai 2016, bornes comprises :
    • ≥1/5/2016 ≤31/5/2016  : utilise les opérateurs supérieur ou égale à et inférieur ou égale à et les deux critères sont séparés par l'espace ;
    • 1/5/2016…31/5/2016 : plus simple, utilise l'opérateur intervalle ;
    • */5/2016 : utilise l'opérateur * ;
    • 5/2016 : plus simple encore, on saisit uniquement le mois et l'année ;
    • 5 : encore plus concis, on saisit uniquement le mois, FileMaker Pro recherche alors tous les enregistrements dont la date correspond au moi de mai de l'année en cours.
  • Voici d'autres critères de recherche :
    • 15/*/*  : recherche tous les enregistrements dont la rubrique date contient une date tombant le quinze de chaque mois, de chaque année ;
    • vendredi : recherche tous les enregistrements dont la rubrique date contient une date tombant un vendredi ;
    • ven. : plus concis que précédemment, on saisit seulement les trois premières lettres du nom du jour recherché terminé par un point ;
    • {lundi…vendredi}/*/2016 : recherche toutes les dates tombant en semaine pour l'année 2016 ;
    • {15…31}/{1…6}/2016 : recherche toutes les dates tombant en deuxième quinzaine pour le premier semestre 2016 ;

Heure

Pour les heures nous pouvons effectuer les recherches suivantes, avec un système paramètre avec les heures à la française :

  • Pour rechercher tous les enregistrements dont l'heure est 10 heures 30 minutes :
    • 10:30 
  • Pour rechercher tous les enregistrements dont l'heure est comprise entre 10 heures 30 minutes et 15 heures 25 minutes, bornes comprises :
    • ≥10:30 ≤15:25 : utilise les opérateurs supérieur ou égale à et inférieur ou égale à et les deux critères sont séparés par l'espace ;
    • 10:30…15:25 : utilise l'opérateur intervalle.
  • Pour rechercher tous les enregistrements dont l'heure est comprise entre 0 heure et 11 heures 59 minutes 59 secondes :
    • ≥0 ≤11:59:59 : utilise les opérateurs supérieur ou égale à et inférieur ou égale à et les deux critères sont séparés par l'espace ;
    • 0…11:59:59 : utilise l'opérateur intervalle ;
    • …11:59:59 : utilise l'opérateur intervalle ;
    • ≤11:59:59 : utilise l'opérateur inférieur ou égale à ;
    • <12 : utilise l'opérateur inférieur à ;
    • AM : utilise le latin antemeridiem.
  • Pour rechercher tous les enregistrements dont l'heure est comprise entre midi et minuit :
    • ≥12 ≤23:59:59 : utilise les opérateurs supérieur ou égale à et inférieur ou égale à et les deux critères sont séparés par l'espace ;
    • 12…23:59:59 : utilise l'opérateur intervalle ;
    • 12… : utilise l'opérateur intervalle ;
    • ≥12 : utilise l'opérateur supérieur ou égale à ;
    • >11:59:59 : utilise l'opérateur supérieur à ;
    • PM : utilise le latin post meridiem.
  • Voici d'autres critères de recherche :
    • 20:*:* : recherche tous les enregistrements dont la rubrique heure correspond à 20 heures ;
    • 20 : recherche tous les enregistrements dont la rubriques heure correspond à 20 heures ;
    • *:20:* : recherche tous les enregistrements dont la rubrique heure contient une heure ayant 20 comme minutes ;
    • {8…11}:{30…59} : recherche tous les enregistrements dont la rubrique heure contient une heure comprise entre 8 et 11 heures et les minutes comprises entre 30 et 59.

Horodatage

Pour les horodatées utiliser les critères vus précédemment pour les dates et les heures.

Conteneur

C'est encore plus simple pour les conteneurs : on ne peut pas effectuer de recherche dans ce type de rubrique.

 

C'est tout pour aujourd'hui !

Voilà, c'est tout pour aujourd'hui, si ce retour aux fondamentaux vous plaît, je continuerai la semaine prochaine avec les recherches un peu plus compliquées mélangeant les opérateurs booléens ET, OU et NON…

David Julot

Bonjour à tous,

Quelle plongée ! Vendredi midi j'ai revu un ami qui passe en ce moment une formation pour devenir instructeur de plongée avant de partir voir les kangourous (que je ne savais pas adeptes de la plongée -_-) et, comme vous avez pu le constater, j'ai plongé en apnée pour remonter tous mes billets du Blog FM pour les remettre dans le blog intégré à notre forum tant aimé...

Je m'aperçois que les premiers billets, ils ont 9 ans pour certains, sont encore d'actualité, je vous invite donc à les découvrir ou redécouvrir ! J'ai remis un peu d'ordre dans leur présentation. N'hésitez pas à me remonter les erreurs ou coquilles éventuelles...

Je vais maintenant pouvoir me consacrer aux futurs billets dominicaux ! Si vous avez des demandes particulières, n'hésitez pas à me les soumettre en commentaire...

À très vite :)

David Julot

help.jpg

Depuis lundi FileMaker a changé l’interface de son site web… Mais pas seulement ! Les adresses www.fileMaker.fr, www.filemaker.co.uk, etc… ont également été changées. Pas d’inquiétude en la matière, puisque des redirections ont été mises en place, si vous saisissez www.filemaker.fr cela va être redirigé vers www.filemaker.com/fr. Jusqu’ici rien d’anormal !

Mais si comme moi vous avez l’habitude de saisir www.filemaker.fr/help pour accéder rapidement à l’aide en ligne, la redirection n’a pas été faite… Il faut donc se souvenir que l’url est www.filemaker.com/help/13/fmp/fr/index.html.

À retenir donc !

David Julot

pageGardeAddendumFM13_2014.pngLors de la Conférence FileMaker, organisée par La Source multimédia et FileMaker, qui s’est tenue cette année à Toulouse du 23 au 25 octobre 2014, l’Addendum FileMaker 13 a été distribué à tous les participants. Il est maintenant disponible en version Adobe Acrobat (PDF).

Nouvelle version PDF de l’Addendum FileMaker, revue et augmentée pour FileMaker 13. Principales nouveautés de cette édition :

  • la syntaxe des commandes SQL dont celle utilisée par la fonction ExecuterSQL ;
  • les commandes fmsadmin ;
  • le codage URL des caractères spécifiques.

Nous espérons que vous prendrez plaisir à consulter cette nouvelle édition tout comme nous avons eu plaisir à prendre soin de vous fournir un document précis et utile.

Nous vous encourageons à nous signaler les erreurs, les omissions, ou à nous faire des suggestions.

Pour télécharger le document PDF (21,6 Mo), cliquer ici.

David Julot

addendumFM12_2013a.jpg

À l’occasion de la Conférence FileMaker qui s’est tenue cette année à Lyon, du 24 au 26 octobre 2013, nous avons remis aux participants la nouvelle version de l’Addendum au format brochure. Nous vous proposons ici de le télécharger au format PDF.

addendumFM12_2013b.jpgSuite à la sortie de la version sur l’iBooks Store, certains développeurs n’ayant pas d’iPad nous ont fait part de leur intérêt pour une version papier transportable, la version poster étant moins pratique… Nous avons donc eu l’idée de l’éditer en brochure bilingue: avec une entrée en français et une traduction en anglais et une entrée en anglais avec les traductions en français, allemand et italien.

Pour celles et ceux qui ne le connaissent pas encore, l’addendum est à l’origine un poster de toutes les fonctions de calcul de FileMaker, avec leur version d’apparition et le type de donnée retournée. Ce poster est distribué lors de la conférence française des développeurs. Il a été complété par un deuxième poster regroupant toutes les actions de scripts. Depuis octobre 2012, une version électronique pour iPad est disponible gratuitement depuis l’iBooks Store.

Nous espérons que vous prendrez plaisir à consulter cette édition tout comme nous avons eu plaisir à prendre soin de vous fournir un document précis et utile.

Nous vous encourageons à nous signaler les erreurs, les omissions, ou à nous faire des sugestions.

Pour le télécharger au format PDF, cliquer ici.

Cet Addendum a été réalisé conjointement par [JD] Julot David et fm:DATA Sébastien Senjean.

David Julot

la-chronique-SQL-A.png

Le voici, le voilà, le premier chapitre de la série sur la fonction ExecuterSQL apparue dans FileMaker Pro 12.

Pendant de très longues années, nous avons pu y échapper. Mais le temps est venu de nous y mettre enfin ! Nous étions bien au chaud, dans un endroit bien douillet, un environnement où tout se faisait à la souris… Ah ! Nous voilà à présent à devoir utiliser nos mimines pour quelques vulgaires et obscures requêtes écrites dans une langue qui nous était là inconnue : le SQL…

Les lettres sont lâchées : S–Q—L ! Et non pas SPQR !

 

SQL

Structured Query Language, en français Langage de Requêtes Structuré. Le SQL est apparu à la fin des années 70 et a été une première fois normalisé en 1986. Ce langage permet :

  • de définir des données, c’est-à-dire qu’il permet de créer, modifier et supprimer des tables ;
  • de manipuler les données, c’est-à-dire qu’il permet de créer, modifier et supprimer des données contenues dans des tables. Mais il permet aussi de rechercher des données par des interrogations effectuées dans la base de données ;
  • de contrôler les données, c’est-à-dire de définir des autorisations d’accès aux données.

FileMaker Pro 12 avec la fonction ExecuterSQL permet seulement d’interroger la base de données pour rechercher des données. C’est tout et c’est déjà beaucoup.

L’interrogation simple

Pour effectuer une recherche simple, une interrogation, le langage de requête SQL s’appuie sur deux mots : SELECT et FROM.

  • SELECT qui nous permet de spécifier les colonnes souhaitées séparées par une virgule.
  • FROM qui nous permet de spécifier la table des colonnes spécifiées.

Remarque : avec FileMaker on ne travaille pas directement avec les tables, mais avec les occurrences de tables présentes dans le graphe de liens de FileMaker.

Rappel : FileMaker n’utilise pas le même vocabulaire que les SGBD-R, c’est-à-dire qu’une colonne c’est une rubrique.

 

ExecuterSQL

FileMaker Pro 12 introduit la fonction ExecuterSQL, classée dans les fonctions logiques. La syntaxe de cette fonction est la suivante :

ExecuterSQL ( requête ; séparateur colonne ; séparateur rangée {; paramètres} )

Pour les besoins de cette chronique, vous trouverez à la fin de celle-ci un fichier d’exemple qui intègre la liste des 200 plus grands succès du cinéma en France depuis 1945. Ce fichier d’exemple comporte une table DONNEES, comportant les colonnes (rubriques) Rang, Titre, Realisateur, AnneeSortie, Nationalite et NbEntrees.

Nous souhaitons obtenir la liste de tous les films avec leur rang, nous allons alors écrire la requête suivante :

SELECT Rang, Titre FROM DONNEES

Ce qui dans FileMaker Pro 12 et avec la nouvelle fonction va s’écrire :

ExecuterSQL( "SELECT Rang, Titre FROM DONNEES" ; "" ; "" )

Et nous obtenons la liste des films avec leur rang séparés par une virgule et chaque film séparé par un retour à la ligne. Si vous souhaitez séparer les colonnes par autre chose qu’une virgule, vous pouvez le spécifier dans le deuxième paramètre de la fonction ExecuterSQL.

// données séparées par une espace : 
ExecuterSQL( "SELECT Rang, Titre FROM DONNEES" ; " " ; "" )

// données séparées par une tabulation :
ExecuterSQL( "SELECT Rang, Titre FROM DONNEES" ; Caractere( 9 ) ; "" )

// données séparées par une suite de caractères :
ExecuterSQL( "SELECT Rang, Titre FROM DONNEES" ; " : " ; "" )

Idem si vous souhaitez séparer les rangées par autre chose qu’un simple retour à la ligne.

// rangées séparées par 2 retours à la ligne :
ExecuterSQL( "SELECT Rang, Titre FROM DONNEES" ; "" ; "¶¶" )

// rangée séparées par un point-virgule :
ExecuterSQL( "SELECT Rang, Titre FROM DONNEES" ; "" ; ";" )

Pour le moment nous obtenons tout le contenu de toute la table DONNEES. Il serait peut-être intéressant de pouvoir sélectionner qu’une partie des données, en spécifiant un critère par exemple.

 

Le filtrage des données

Une requête SQL utilise le mot clef WHERE pour spécifier un critère de filtrage de données. Ce qui correspond à effectuer une recherche. La syntaxe SQL est donc la suivante :

SELECT colonne1,  ,colonneN FROM table WHERE critère

Aujourd’hui nous nous occuperons que des critères de recherche simple. Les critères de bases utilisent les opérateurs de comparaisons >, >=, <, <=, =, <> et des fonctions booléennes NOT, AND et OR.

Si nous souhaitons, par exemple, la liste des films ayant eu plus de 10 000 000 d’entrées, alors nous aurons la requête suivante :

SELECT Rang, Titre FROM DONNEES WHERE NbEntrees > 10000000

soit

ExecuterSQL( "SELECT Rang, Titre FROM DONNEES WHERE NbEntrees > 10000000" ; "" ; "" )

Si maintenant nous souhaitons la liste des films français ou la liste des films franco-italiens, nous pourrions écrire les requêtes suivantes :

// liste des films français :
ExecuterSQL( "SELECT Rang, Titre FROM DONNEES WHERE Nationalite = 'FR' " ; "" ; "" )

// liste des films franco-italiens :
ExecuterSQL( "SELECT Rang, Titre FROM DONNEES WHERE Nationalite = 'FR/IT' " ; "" ; "" )

// liste des films étrangers :
ExecuterSQL( "SELECT Rang, Titre FROM DONNEES WHERE Nationalite <> 'FR' " ; "" ; "" )

// liste des films français ayant eu plus de 10 000 000 d'entrées :
ExecuterSQL( "SELECT Rang, Titre FROM DONNEES WHERE Nationalite = 'FR' AND NbEntrees > 10000000" ; "" ; "" )

Vous remarquerez que l’opérateur = signifie « strictement égale à » ce qui équivaut au double signe égale dans la recherche FileMaker.

 

Le tri

Il est bien évident que le résultat d’une requête SQL peut être trié. En base de données généralement les données sont fournies par ordre de création. En SQL le mot clef ORDER BY permet de définir un critère de tri.

Par défaut, l’ordre de tri est croissant. Si nous souhaitons obtenir la liste de tous les films triés par ordre alphabétique nous allons avoir la requête SQL suivante :

SELECT Titre FROM DONNEES ORDER BY Titre

soit :

ExecuterSQL( "SELECT Titre FROM DONNEES ORDER BY Titre" ; "" ; "" )

Il existe deux options qui spécifient le sens du tri : ASC pour croissant et DESC pour décroissant. Nous pourrions donc avoir les requêtes suivantes :

// liste des films français triés par ordre alphabétique :
ExecuterSQL( "SELECT Titre FROM DONNEES ORDER BY Titre" ; "" ; "" )

// ou bien :
ExecuterSQL( "SELECT Titre FROM DONNEES ORDER BY Titre ASC" ; "" ; "" )

// liste des films triés le nombre croissant d'entrées :
ExecuterSQL( "SELECT Titre FROM DONNEES ORDER BY NbEntrees ASC" ; "" ; "" )

// liste des films français triés par ordre alphabétique inverse :
ExecuterSQL( "SELECT Titre FROM DONNEES WHERE Nationalite = 'FR' ORDER BY Titre DESC" ; "" ; "" )

 

À retenir pour aujourd’hui

Ce qu’il faut retenir pour aujourd’hui c’est la syntaxe de base d’une requête simple SQL :

SELECT colonne1, …, colonneN FROM table WHERE critère ORDER BY critère

Le fichier d’exemple contenant les données et surtout toutes les requêtes SQL présentées dans cette chronique est téléchargeable ici :

JD_SQL_partie_01.zip

 

C’est tout pour aujourd’hui

Nous continuerons notre découverte du SQL avec ExecuterSQL lors de la prochaine chronique. Pour le moment il est temps de se reposer un peu et de profiter un peu des derniers jours d’hivers !

Un dernier petit point avant que nous nous quittions, je me suis inspiré pour cette chronique du livre « Le langage SQL, Pratiques de base et concepts avancés » de Frédéric Baurand, Professeur agrégé, édité aux éditions Ellipses (www.editions-ellipses.fr) ISBN 978-2-7298-7080-5. C’est un ouvrage normalement destiné aux étudiants des filières technologiques des enseignements supérieurs, mais je le trouve très pédagogique et bourré d’exercices.

Je me suis inspiré, dans une moindre mesure, du livre « SQL, 5e édition » de Ryan Stephens, Ronald Plew et Arie Jones édité aux éditions Pearson, ISBN de la version française 978-2-7440-7582-7. Bonne lecture.

David Julot

jd_saison2-moitié-a.png

Ou si vous préférez, «L’ABC de la base 10, en base 16», ou encore «L’2748 de la base 16, en base 10» ! Je crois que c’est clair, non ?

Voilà donc la fameuse chronique sur l’hexadécimal que tout le monde ne souhaitait pas voir, puisque vous n’avez pas été nombreux la dernière fois à vouloir une chronique sur le SQL et FileMaker.

 

La genèse

Au début était le bit, valeur binaire 0 ou 1, le vrai ou le faux, le tout ou rien ! Au désespoir d’Olivier D., il n’y avait pas encore le «ptete ben qu’oui, ptete ben qu’nan» et avant qu’on ne se moque des normands, dites vous bien que le «ptete ben qu’oui, ptete ben qu’nan» ne sera possible qu’avec l’informatique quantique, puisque les deux états (vrai et faux) pourront être présents simultanément ! Mais là on ne parle plus de bit mais de qubit, à ne pas confondre avec le cubi de vin, qui permet, lui, d’obtenir des états aléatoires après absorption complète du liquide…

Revenons à nos bits. Lorsqu’en électronique on a commencé à programmer des processeurs, il fallait leur passer les commandes en binaires, de longues suites de 0 et de 1.

Par exemple : 000100100011010001010110011110001001101010111100110111101111

Comme vous pouvez le constater, il est très difficile de lire cette suite et encore plus pour la retranscrire sans se tromper.

 

Le quartet

Quartet, terme français pour désigner un groupe de quatre bits, allant de 0000 à 1111.

L’électronicien, qui en avait marre de se tromper dans la saisie des suites de 0 et de 1, s’est dit qu’il pourrait coder non plus en base 2, mais en base 16. Puisqu’un quartet peut représenter une valeur comprise entre 0 (0000) et 15 (1111).

La base 16, aussi ainsi appelée base hexadécimale. Hexa pour 6 et décimale pour 10, puisque l’on a pris les 10 chiffres habituels et que l’on a ajouté 6 symboles, par commodité on a pris les 6 premières lettres de l’alphabet latin (A à F). Donc 6+10 = hexa+decimal → hexadécimal.

Les 16 chiffres hexadécimaux sont dans l’ordre : 0 1 2 3 4 5 6 7 8 9 A B C D E F

Et la table de correspondance :

binaire hexadécimal
0000    0
0001    1
0010    2
0011    3
0100    4
0101    5
0110    6
0111    7
1000    8
1001    9
1010    A
1011    B
1100    C
1101    D
1110    E
1111    F

Il est donc plus aisé de retranscrire une suite de chiffres et de lettres, si nous reprenons l’exemple précédent dont on aura regroupé les bits par quartet :

Par exemple : 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

ce qui donne en hexadécimal : 1 2 3 4 5 6 7 8 9 A B C D E F

 

L’octet

L’octet est un regroupement de deux quartets, donc de 8 bits, mais aussi de deux chiffres hexadécimaux. Donc un octet peut représenter une valeur comprise entre 00000000 et 11111111, entre 0 et 256 en base 10 et donc une valeur comprise entre 00 et FF en hexadécimal.

Nous voyons clairement qu’il est très simple de représenter un nombre en hexadécimal, cela facilite les retranscription et évite les erreurs éventuelles.

 

La couleur

L’hexadécimal est aujourd’hui surtout utilisé pour coder les différentes couleurs dans leur composante Rouge Vert et Bleu. Avec par exemple 000000 pour le noir et FFFFFF pour le blanc. Où chaque composante est codée sur 1 octet, soit 256 nuances de rouge, 256 nuances de vert, et 256 nuances de bleu, soit 16 777 216 nuances de couleurs, puisque 256 x 256 x 256 =  2ˆ24 = 16 777 216 !

Pour celles et ceux qui se sont interrogé sur les couleurs dites «web», le codage s’effectue par l’utilisation de seulement 6 nuances de rouge, de 6 nuances de vert et de 6 nuances de bleu, en prenant uniquement les valeurs hexadécimales 0, 3, 6, 9 , C et F. Donc un codage de 000 à FFF.

La correspondance entre les couleurs dites «web» et la palette des 16 777 216 couleurs s’effectue de la manière suivante : on double le chiffre hexadécimale, 000 pour 000000, 09C pour 0099CC, 00F pour 0000FF, etc.

 

Le codage ASCII

Même si le codage ASCII a disparu au profit du codage UNICODE, une petite remarque s’impose, car pour simplifier la vie des électroniciens (toujours eux…), le codage ASCII a organisé la représentation des caractères en se fondant sur la base hexadécimale.

Les nombres étant codés de 011 0000 pour 0 à 011 1001 pour 9 en binaire, soit de 30 pour 0 à 39 pour 9 en hexadécimal.

Les lettres majuscules étant codés de 100 0001 pour A à 101 1010 pour Z en binaire, soit de 41 pour A à 5A pour Z en hexadécimal.

Et comme les électroniciens sont de grands fainéants (oui oui!, moi le premier), pour passer des lettres majuscules en lettres minuscules, il suffisait de changer le 6e bit :

Les lettres minuscules étant codés de 110 0001 pour a à 111 1010 pour z en binaire, soit de 61 pour a à 7A pour z en hexadécimal. Soit une augmentation de 20 (en base 16) par rapport à la valeur de la même lettre en majuscule.

Pour rappel, le codage ASCII utilisait uniquement 7 bits.

 

UUID

La semaine dernière je vous ai reparlé des clefs primaires et de la nouvelle fonction de FileMaker (enfin je parle de FileMaker !) Obtenir( UUID ), revoir la chronique.

Et bien pour représenter l’UUID qui est codé sur 128 bits, soit 16 octets, il est plus simple et surtout plus court d’utiliser la base hexadécimale, puisque cela ne prendra que 32 chiffres hexadécimaux. Alors qu’en base décimale, cela peut prendre entre 0 et 40 chiffres.

Par exemple, l'UUID 518C7AA8-F465-4636-99CA-A90263F1E668 pourrait s'écrire en base 10 : 1368160936-62565-17974-39370-185827731826280

 

Cadeau

Et comme vous avez été très sages pendant cette chronique, je vous propose de télécharger une base d’exemple qui comporte deux fonctions personnalisées récursives. La première pour la conversion des nombres hexadécimaux en nombres décimaux et la seconde pour convertir des nombres décimaux en nombres hexadécimaux.

JD_20130304_exemple.zip 

 

C’est tout pour aujourd’hui

Voilà, c’est tout pour aujourd’hui. La prochaine chronique portera sur la nouvelle fonction ExecuterSQL introduite par FileMaker Pro 12. Et d’ici là n’hésitez pas à poster des commentaires.

David Julot

la-chroniqueb-compressed.png

La saison 2 continue avec un petit retour en arrière… Souvenez-vous, je vous avais parlé de l’importance de la clef primaire pour les développeurs de bases de données… Si si, souvenez-vous c’était le 6 janvier 2008 (5 ans déjà, le temps passe vite…).

Depuis, la version 12 de FileMaker Pro est arrivée, ainsi que FileMaker Go pour iPhone et iPad.

 

Petit rappel

J’avais écrit à l’époque l’importance de se passer de clef primaire sérialisées, utilisant l’option de rubrique de type entrée automatique numéro de série, car si nous devons rapprocher deux bases pour n’en former qu’une seule nous risquons d’obtenir des doublons dans les clefs primaires.

Je vous avais alors proposé de générer une clef aléatoire intégrant la notion de temps, pour limiter la probabilité d’obtenir des clefs identiques. La formule proposée était la suivante :

ObtenirNombre ( Obtenir( HorodatageActuel ) ) & 
EXTRAIT( « 1234567890azertyuiopqsdfghjklmwxcvbn » ; ALEA * 36 ; 1 ) & 
EXTRAIT( « 1234567890azertyuiopqsdfghjklmwxcvbn » ; ALEA * 36 ; 1 ) &
EXTRAIT( « 1234567890azertyuiopqsdfghjklmwxcvbn » ; ALEA * 36 ; 1 ) &
EXTRAIT( « 1234567890azertyuiopqsdfghjklmwxcvbn » ; ALEA * 36 ; 1 ) &
EXTRAIT( « 1234567890azertyuiopqsdfghjklmwxcvbn » ; ALEA * 36 ; 1 )

Depuis, j’avais amélioré cette formule en y intégrant une clef de contrôle à la clef générée, appeler «checksum» en anglais. Une clef de contrôle de type complément à 97. Si vous êtes sage, je vous donnerai cette formule.

Pourquoi une clef de contrôle ? me direz-vous. Pour tout vous dire, je travaille depuis quelques années avec des entreprises qui ont besoin de sécuriser leurs données de manière accrue. Et le fait par exemple d’ajouter une clef de contrôle à une clef primaire, permet entre autres choses de vérifier l’origine de la clef et donc la source de l’information et de ne pas accepter des données avec une origine inconnue, et de vérifier aussi l’intégrité des données. Qui plus est, avec la valeur de l’horodatage, je peux savoir si une clef primaire est cohérente ou non.

Ne vous inquiétez pas, je ne dévoile pas tous mes petits secrets de fabrication, mais je vous donne simplement des idées pour la génération de clefs primaires qui peuvent servir aussi à authentifier des informations reçues ou transmises.

Je vous accorde que pour une gestion commerciale classique, cela n’est pas nécessaire. Mais revenons à notre clef primaire non sérialisée.

 

UUID

Qu’est-ce que c’est que çà !!!

UUID pour Universally Unique IDentifier c’est-à-dire, en français, IDentifiant Universel Unique. C’est typiquement une clef primaire non sérialisée, mais cet identifiant suit une norme, actuellement la norme ISO/IEC 9834-8:2008. Cet identifiant intègre plusieurs choses : une empreinte numérique de la machine, le temps (date et heure), des valeurs aléatoires le tout codé en 128 bits, soit 16 octets, et est affiché en hexadécimal.

Et il y a le GUID (d’où le titre de cette chronique), en anglais le «Globally Unique IDentifier» ou en français l’ IDentifiant Global Unique qui donne «IDGU» moins joli à prononcer je vous l’accorde. Le GUID, donc, a les mêmes caractéristiques que le UUID, à savoir : codage sur 128 bits, donc 16 octets, affiché en hexadécimal et même présentation. Ne me demandez pas pourquoi coexiste l’UUID et le GUID, je n’en sais rien.

FileMaker Pro 12, pour sa part, implémente l’identifiant UUID via la fonction Obtenir( UUID ).

Vous pouvez donc utiliser cette fonction comme formule d’une option d’entrée automatique de type calcul d’une rubrique. Soit de l’utiliser deux fois. En effet, rien ne vous interdit d’utiliser la formule :

obtenir ( UUID ) & "-" & obtenir ( UUID )

Après tout, FileMaker Pro se limite à 100 caractères pour l’indexation des mots contenus dans une rubrique, autant en profiter !

 

C’est tout pour aujourd’hui !

Aujourd’hui, ce n’était pas qu’une simple petite chronique minimaliste, mais un complément, ou une mise à jour si vous préférez, d’une chronique vieille de cinq ans. Mais cela ne fait pas de mal de réviser un peu ses classiques !

Pour la prochaine chronique, j’ai bien une petite idée à vous proposer, mais seulement si vous manifestez votre intérêt. J’envisage en effet une chronique sur l’utilisation de la fonction ExecuterSQL, nouvelle fonction de FileMaker Pro 12. Il existe en effet des sites qui explique le SQL, et les possibilités offertes par cette fonction, mais ils sont en anglais, et je sais que parmi vous il y a des personnes allergiques à cette langue. Alors, je peux me proposer à vous écrire quelques lignes sur le sujet.

Mais pour cela, manifestez-vous, via les deux boutons Facebook et Tweeter ci-dessous ! Le challenge est donc le suivant : s’il n’y a pas au moins 10 au compteur « j’aime » et 10 au compteur Tweeter, alors vous aurez droit à une chronique sur l’hexadécimal ! ;-)

À bientôt.

David Julot

la-chronique-compressed.png

Cela fait maintenant date(24;2;2013)-date(9;8;2011) jours que je n’ai pas publié de chronique sur ce blog… et je dois vous l’avouer : vous m’avez manqué ! Voici donc la saison 2 de mes chroniques…

Pour commencer cette nouvelle saison, je vous propose cette semaine un petit récapitulatif de méthodes pour récupérer une liste de valeurs issues d’enregistrements liés. Installez-vous confortablement, le temps que je dresse le décor.


Le décor…

Imaginons une base de données composée de deux tables : Sociétés et Contacts. À une société peut correspondre 0, 1 ou plusieurs contacts. À un contact doit correspondre une société et une seule. Nous obtenons le schéma relationnel suivant :

Je souhaite obtenir une liste de noms des contacts liés à une société. Cette liste devra être triée par ordre alphabétique.

JD_20130224_organigrammes01.png
Schéma relationnel de la base de données utilisée pour l’exemple.

 

1ère méthode – Boucle sur les contacts

Pour cette première méthode, je vais utiliser une technique empirique qui consiste à récupérer l’identifiant de la société, à rechercher tous les contacts ayant cet identifiant société, puis par une boucle constituer une liste des noms. Voici l’algorigramme correspondant :

JD_20130224_organigrammes02.png
Algorigramme de la 1ère méthode

Cette méthode permet de se passer de lien relationnel, puisqu’une recherche des contacts avec l’identifiant société est effectuée. Voici le script correspondant :

# ce script permet la création d'une liste de noms pour les contacts liés à la société # 
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Gestion erreurs [ Oui ]
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# initialisation de la variable
Définir variable [ $idSoc; Valeur :SOCIETES::idSociete ]
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# activation de la table Contacts et recherche des contacts
Activer modèle [ CONTACTS (CONTACTS) ]
Mode Recherche [ ]
Définir rubrique [ CONTACTS::idSociete; "==" & $idSoc ]
Exécuter la requête [ ]
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# vérification de la présence de contact
Si [ Obtenir( NombreEnregTrouvés ) < 1 ]
  # cas où il n'y pas de contact lié à la société
  # alors retour à la table Sociétés et fin de la procédure
  Activer modèle [ modèle d'origine ]
  Fin de script [ ]
Fin de si
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# traitement pour la création de la liste de valeurs
#
# trie des contacts par ordre alphabétique
Trier enregistrements [ Rétablir; Sans fenêtre ]
#
# initialisation des variables
Définir variable [ $i; Valeur :1 ]
Définir variable [ $nb; Valeur :Obtenir( NombreEnregTrouvés ) ]
Définir variable [ $liste; Valeur :"" ]
#
# boucle pour récupérer le nom de chaque contact
Boucle
  # si le compteur d'itération est supérieur au nombre d'enregistrements à traiter
  # alors sortie de la boucle
  Fin de boucle si [ $i > $nb ]
  #
  # activation du contact n, et récupération du nom
  Afficher enreg/requête/page [ $i ] [ Sans fenêtre ]
  Définir variable [ $liste; Valeur :Cas( Not EstVide( $liste ) ; $liste &  ) & CONTACTS::nom ]
  #
  # incrémentation du compteur d'itération
  Définir variable [ $i; Valeur :$i + 1 ]
  #
Fin de boucle
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# fin du traitement, retour à la table Société et enregistrement du résultat
Activer modèle [ modèle d'origine ]
Définir rubrique [ SOCIETES::resultat; $liste ]
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# fin de la procédure
Fin de script [ ]

Vous trouverez ce script dans le fichier d’exemple à la fin de cette chronique.

 

2e méthode – Boucle dans la table externe des contacts

La deuxième méthode consiste à utiliser la table externe présente sur le modèle associé à l’occurrence de la table Sociétés. Cette méthode, nommée «de débutant» par un ami qui se reconnaîtra, vérifie s’il y des enregistrements liés à la société et si c’est le cas effectue une boucle sur les rangées de table externe pour constituer une liste des noms. Voici l’algorigramme correspondant :


JD_20130224_organigrammes03.png
Algorigramme de la 2e méthode

Cette méthode, plus courte que la première utilise le même algorithme, à l’activation de table près. La table externe utilise l’option Trier les enregistrements pour effectuer le tri par ordre alphabétique. Voici le script correspondant :

# ce script permet la création d'une liste de noms pour les contacts liés à la société 
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Gestion erreurs [ Oui ]
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# vérification de la présence de contact
Si [ Decompte( CONTACTS::idSociete ) < 1 ]
  # cas où il n'y pas de contact lié à la société
  # alors fin de la procédure
  Fin de script [ ]
Fin de si
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# traitement pour la création de la liste de valeurs
#
# initialisation des variables
Définir variable [ $i; Valeur :1 ]
Définir variable [ $nb; Valeur : Decompte( CONTACTS::idSociete ) ]
Définir variable [ $liste; Valeur :"" ]
#
boucle 
  # pour récupérer le nom de chaque contact Boucle
  # si le compteur d'itération est supérieur au nombre de rangée à traiter
  # alors sortie de la boucle
  Fin de boucle si [ $i > $nb ]
  #
  # activation de la rangée n, et récupération du nom
  Activer rangée externe [ Sans fenêtre; $i ]
  Définir variable [ $liste; Valeur :Cas( Not EstVide( $liste ) ; $liste &  ) & CONTACTS::nom ]
  #
  # incrémentation du compteur d'itération
  Définir variable [ $i; Valeur :$i + 1 ]
  #
Fin de boucle
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# fin du traitement, enregistrement du résultat
Valider enreg./requêtes
Définir rubrique [ SOCIETES::resultat; $liste ]
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# fin de la procédure
Fin de script [ ]

Vous trouverez ce script dans le fichier d’exemple à la fin de cette chronique.

 

3e méthode – Fonction Liste

La troisième méthode utilise la fonction Liste  apparue avec FileMaker Pro 8.5. Cette méthode créé la liste de valeurs avec la fonction Liste. Voici l’algorigramme correspondant :

JD_20130224_organigrammes04.png
Algorigramme de la 3e méthode

Cette méthode encore plus courte que les précédentes, utilise la fonction Liste pour générer la liste des noms. Pour que cette liste soit triée par ordre alphabétique, nous devons utiliser l’option Trier les enregistrements de la définition du lien existant entre les occurrences des tables Sociétés et Contacts. Voici le script correspondant :

# ce script permet la création d'une liste de noms pour les contacts liés à la société 
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Gestion erreurs [ Oui ]
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# traitement pour la création de la liste de valeurs
#
# initialisation de la variable
Définir variable [ $liste; Valeur :"" ]
#
# récupération de la liste des noms
Définir variable [ $liste; Valeur : Liste( CONTACTS::nom ) ]
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# fin du traitement, enregistrement du résultat
Définir rubrique [ SOCIETES::resultat; $liste ]
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# fin de la procédure
Fin de script [ ]

Vous trouverez ce script dans le fichier d’exemple à la fin de cette chronique.

 

4e méthode – Fonction ExécuterSQL ()

La dernière méthode présentée ici utilise la nouvelle fonction introduite par FileMaker Pro 12 : ExecuterSQL. Voici l’algorigramme correspondant :

JD_20130224_organigrammes05.png
Algorigramme de la 4e méthode

Je ne vais pas vous faire une formation sur les requêtes SQL, mais retenez ceci : nous devons indiquer quelle rubrique nous souhaitons récupérer le contenu (instruction SELECT), indiquer de quelle occurrence de table est issue la rubrique (instruction FROM), sur quel critère nous souhaitons récupérer les valeurs (instruction WHERE) et enfin de quelle manière trier le résultat (instruction ORDER BY) :

# ce script permet la création d'une liste de noms pour les contacts ayant le même idSociete que la société 
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Gestion erreurs [ Oui ]
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# traitement pour la création de la liste de valeurs
#
# initialisation de la variable
Définir variable [ $liste; Valeur :"" ]
#
# récupération de la liste des noms
Définir variable [ $liste; Valeur: ExecuterSQL ( "SELECT CONTACTS.nom FROM CONTACTS WHERE CONTACTS.idSociete=? ORDER BY CONTACTS.nom, CONTACTS.prenom" ; "" ; "" ; SOCIETES::idSociete ) ]
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# fin du traitement, enregistrement du résultat
Définir rubrique [ SOCIETES::resultat; $liste ]
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# fin de la procédure
Fin de script [ ]

 

Le fichier d’exemple

Le fichier d’exemple que je vous propose est au format FileMaker Pro 12, si vous avez une version précédente vous ne pouvez pas ouvrir ni utiliser ce fichier. Pour le télécharger, c’est par ici : JD_20130224_exemple.zip

 

C’est fini pour aujourd’hui

À la semaine prochaine pour le deuxième épisode de la saison 2 ! Et n’hésitez pas à poster vos commentaires…

Post-scriptum : le résultat du calcul introductif, date(24;2;2013)-date(9;8;2011) donne 565 jours.

David Julot

addendum_v2_5_200.pngIl était attendu, même très attendu, et le voici accompagné de deux frères… Je parle de l’Addendum ! Ce sont donc des Addenda que je vous propose cette année. Pour information addenda est le pluriel d’addendum (latin).

C’est à l’occasion de la Conférence FileMaker de Toulouse qu’ils ont été remis sous forme de poster à tous les participants, mais pour celles et ceux qui ne sont pas venus, je vous propose de les télécharger, ici même…

Pour commencer, l’Addendum FileMaker 12 listant toutes les fonctions de calcul de FileMaker Pro 12, classées par catégorie, et avec une nouveauté cette année, l’information concernant les fonctions sensibles ou non à la casse. Pour télécharger le document au format PDF, c’est ici : addendum_v2_5.pdf.

addendum_v3_3_2002.pngEnsuite, je vous présente le petit frère : l’Addendum FileMaker 12 listant toutes les actions de script de FileMaker Pro 12, classées par catégorie et avec l’indication de leur compatibilité avec les clients Pro, Serveur, IWP, CWP, iOS, etc…

Vous y trouverez aussi la liste des codes erreur ainsi que les déclencheurs de script classés dans l’ordre chronologique.

Pour télécharger le document au format PDF, c’est par ici : addendum_v3_3.pdf

 

Addendum_FM12_iBook.pngEnfin, pour terminer, et pour garder le meilleur pour la fin, une grande première… L’Addendum FileMaker 12 est maintenant disponible au format iBook pour iPad, téléchargeable gratuitement depuis iBookstore d’Apple.

Vous y trouverez toutes les fonctions de calcul, toutes les actions de script, tous les ports IP utilisés par FileMaker, les tables de vérité des fonctions booléennes, toutes les commandes XML (pour la publication personnalisée) et leurs paramètres, etc…

Une mise à jour est en cours de réalisation pour inclure un glossaire complet des fonctions et des actions.

Pour le télécharger gratuitement, c’est par ici : lien vers iTunes.iBookstore_Badge_FR_1252.png

 

Tous ces documents ont été réalisés par David Julot et Sébastien Senjean. N’hésitez pas à nous faire part de vos remarques.

David Julot

fms11.pngÉtant un irréductible des logiciels en français, j’utilise tous mes logiciels dans la langue de Molière, quoique je doute fortement que celui-ci ai connu l’informatique… Pour mes clients, j’installe aussi les logiciels en français, ce qui leur permet de mieux se les approprier. Il en est de même avec FileMaker Server.

Tout récemment, justement, chez un de mes clients, je rencontre un problème avec un script exécuté par FileMaker Server. Alors qu’il y a une petite dizaine de scripts exécutés sans problème par FileMaker Server, dont certains toutes les quinze minutes, là il y en a un qui ne donne pas le résultat attendu.

Et j’ai mis du temps à comprendre d’où venait le problème… Il s’avère que FileMaker Server, installé en français, ne comprend pas la fonction Evaluation().

En fait si ! Plus précisément, FileMaker Server ne sait pas évaluer la fonction Evaluation() si celle-ci contient une chaîne contenant des fonctions en français. Ce n’est pas clair ?

// ne fonctionnera pas :
EVALUATION( "ALEA * 10 )
// fonctionnera :
EVALUATION( "RANDOM * 10 )

// ne fonctionnera pas :
EVALUATE( "ALEA * 10 )
//fonctionnera :
EVALUATE( "RANDOM * 10″ )


En fait, FileMaker Server installé en français, ne reconnaît pas les formules écrites en français ! Si vous souhaitez donc faire exécuter des scripts par FileMaker Server, et que vous utilisez la fonction Evaluation(), écrivez les instructions en anglais.

Idem pour les fonctions ErreurEvaluation() et EstExpressionValide().

Pour information : il n’y a aucun problème avec FileMaker Go pour iPhone et FileMaker Go pour iPad.

Ressources :

David Julot

On peut, via un script, escamoter la barre d’outils, celle qui apparaît en bas de l’écran d’un iPhone ou d’un iPad et la verrouiller pour que l’utilisateur ne puisse l’utiliser. Cela permet, entre autre, d’augmenter l’espace de travail.

barre-de-menu-300x48.png

Mais en haut de l’écran, il y a la barre de menu (celle qui apparaît en haut), et cette dernière ne peut pas être escamotée.

En fait, on peut escamoter la barre de menu. Pour cela, il faut utiliser FileMaker Pro Advanced et appliquer le mode «borne de communication» (kiosque) à l’aide des utilitaires Developer.

Pour rappel, le mode «borne de communication» s’active uniquement pour les comptes qui ne sont pas associés au jeu de privilèges [Accès Intégral] ([Full Access]).

Sur iPhone, l’espace de la barre de menu est ainsi récupéré, on a donc tout l’écran à disposition. Par contre, sur iPad, la barre de menu est remplacée par un bandeau noir, on ne récupère donc pas cet espace, mais on empêche l’utilisateur de voir cette barre.

Voici donc les tailles de l’espace disponible en mode kiosque :

Sur FileMaker Go pour iPhone

  • mode portrait : 320px x 460px
  • mode paysage : 480px x 320px

Sur FileMaker Go pour iPad

  • mode portrait : 768px x 973px
  • mode paysage :  1024px x 717px

Évidemment, on aura au préalable escamoté la barre d’outils.

David Julot

FMPlug.pngLe module gratuit de création de boîtes de dialogue DialogPlugin, vient d’être mis à jour en version 0.21.

Cette mise à jour corrige quelques problèmes, essentiellement dans l’environnement Windows. Vous le trouverez en téléchargement sur le site de l’éditeur Kargas Software, à l’adresse suivante : http://kargas.net/dialog.html.
La mise à jour n’apporte pas de nouvelle fonctionnalité, même si cela fait bientôt un an que le développeur en liste un certain nombre. Voici la liste des corrections apportées :

  • Correction, sous Windows, d’un problème qui empêche l’utilisation conjointe d’une case à cocher dans une boîte de dialogue de type liste ;
  • Correction, sous Windows, d’un problème avec les boîtes de dialogue à champ multi-ligne qui transforment les retours à la ligne ;
  • Correction, sous Windows, d’un problème qui empêche l’affichage de l’esperluette (&) dans un libellé ;
  • Correction, sous Mac OS, d’un problème de format de date retourné par la fonction, sans tenir compte du format de date des préférences système.

Ce développeur propose ce module gratuitement, mais rien ne vous empêche de lui faire un don, vous trouverez un lien sur son site web à ce sujet.

David Julot

iconeFMGoIphone.pngFileMaker Go pour iPhone et FileMaker Go pour iPad ont été mis à jour ce matin, passant de la version 1.0.2 à la version 1.0.3.

D’après la note accompagnant ces mises à jour : la version 1.0.3 « résout les problèmes de compatibilité présents sur l’iPhone lors de :

  • l’ouverture des bases de données lorsque les liens envoyés contiennent des espaces dans l’URL.
  • La restauration de fichiers après le lancement de FileMaker Go ;
  • l’utilisation des fichiers récents sur l’iPhone suite à une mise à jour. »

Avant d’effectuer une mise à jour, effectuer par précaution une synchronisation de votre iPhone ou de votre iPad avec iTunes. Pour effectuer ces mises à jour depuis votre iPhone ou iPad :

  1. Ouvrir App Store ;
  2. Choisir Mises à jour ;
  3. Installer la mise à jour proposée pour FileMaker Go.

Pour en savoir plus, cliquer ici.
lien pour la version iPad, cliquer ici.

David Julot

Après plus d’un an d’absence sur le blog, je reviens vers vous avec un petit cadeau, qui je l’espère vous aidera dans le développement de vos bases de données relationnelles FileMaker Pro.

Cet Addendum que je vous propose est un document PDF de deux pages recensant toutes les fonctions disponibles dans FileMaker Pro 11, avec leur type de résultat et leur version d’origine. Il intègre aussi la liste des attributs et des constantes.

addendum01_img.png

Je vous propose donc de télécharger cet Addendum. J’attends de votre part vos remarques et suggestions. Et si vous êtes nombreux à me le demander, je pourrais, peut-être, envisager de le distribuer au format A3 recto lors de la Conférence FileMaker qui aura lieu au moins de juin… Qu’en dites-vous ?

addendum_01.pdf.zip

David Julot

Un SGBD, Système de Gestion de Bases de Données, a pour objectif de stocker une masse d’information très importante, et de permettre le tri, la recherche et la gestion de ces données.

Un SGBD-R, Système de Gestion de Bases de Données Relationnelles, a pour objectif d’éviter la redondance d’information, par la mise en place de liens relationnels. Un SGBD-R fait partie des SGBD.

FileMaker Pro est un SGBD-R, il permet donc, via la mise en relation des tables qui composent une base de données, d’éviter la redondance d’information. Mais il est des situations où la redondance, doublon, devient utile voire crucial !

 

Pourquoi éviter les doublons dans une base de données ? 

Pour plusieurs raisons :

  • Nous sommes foncièrement fainéants, nous n’aimons pas effectuer plusieurs fois la même tâche ;
  • Cela prend du temps à saisir toutes ses informations ;
  • C’est source d’erreur ;
  • Le jour où il faut mettre à jour l’information, il faut la modifier à tous les endroits où elle est stockée.

Les liens relationnels, qui mettent en relation les tables d’une base de données, permettent de stocker l’information à un endroit et un seul. La réalisation d’une base de données relationnelles c’est l’art d’organiser l’information.

Si nous prenons l’exemple d’une base de contacts professionnels, où l’on souhaite par exemple avoir une fiche par société et une fiche par contact. Précisons un peu plus les choses : un contact est rattaché à une société et une seule, et une société peut avoir plusieurs contacts. Nous avons donc le schéma relationnel suivant :

societes.jpg

Le lien relationnel entre la table SOCIÉTÉS et la table CONTACTS, permet, entre autres :

  • De connaître les coordonnées de la société pour laquelle travaille le contact ;
  • De mettre à jour simplement les coordonnées de la société, en un seul endroit (la table SOCIÉTÉS) et en une seule fois.

Qui n’a pas réalisé en son temps une base de données avec une seule table où chaque enregistrement correspond à un contact, comme ceci :

contacts.jpg

Ce qui pose problème dès lors que la société change de coordonnées. Il faut partir à la recherche de tous les contacts pour mettre à jour, enregistrement par enregistrement, les informations modifiées. Il faut en plus être très vigilant, éviter des erreurs à la saisie… Bref un travail titanesque. Voilà pourquoi les liens sont utiles, on crée une table regroupant toutes les informations propres à la SOCIÉTÉ, ce qui nous permet d’avoir un enregistrement par société, on réduit le nombre de rubriques dans la table CONTACTS et on obtient le schéma relationnel présenté plus haut.

 

Qu’est-ce que la référence externe vient faire là ?

La référence externe est une option d’entrée automatique de rubrique. Mais avant d’en parler, prenons un deuxième exemple : celui de la facturation.

Une FACTURE peut avoir plusieurs LIGNES DE FACTURATION. Sur une LIGNE DE FACTURATION, il ne peut y avoir qu’une seule référence de PRODUIT. Un PRODUIT (une référence de produit si vous préférez) peut se retrouver sur plusieurs LIGNES DE FACTURATION. Et une LIGNE DE FACTURATION appartient à une FACTURE et une seule. Nous obtenons le schéma relationnel classique suivant :

facturation.jpg

Et tout va pour le mieux dans le meilleur des mondes…

Que se passe-t-il lorsque nous souhaitons augmenter le prix des produits ? Dans le cas présent, une modification du PRIX UNITAIRE des PRODUITS modifie l’ensemble des LIGNES DE FACTURATION, donc par conséquence les FACTURES ! Il ne faut pas oublier qu’une fois la facture établie, elle ne doit plus être modifiable, c’est une pièce comptable !

Il faut donc pouvoir figer le prix unitaire des produits lors de leur saisie dans une facture. Pour pouvoir figer le prix unitaire, il faut donc stocker sa valeur lors de saisie de la facture. Pour cela nous n’avons pas d’autre moyen que de stocker le prix unitaire dans une rubrique de la table LIGNES DE FACTURATION.

facturation_ref_ext.jpg

La rubrique PRIX UNITAIRE de la table LIGNES DE FACTURE est de type nombre et a une option d’entrée automatique de type référence externe. Cette option permet la « récupération » d’une valeur de rubrique suivant un lien, ou plus simplement : elle permet de copier-coller une valeur. Voici d’ailleurs la définition de cette rubrique :

Image_1.png

Les deux options, Démarrage par la table et Référence externe à partir d’une table liée, définissent le contexte, c’est-à-dire quel chemin doit prendre FileMaker Pro pour aller récupérer la valeur.

Une fois la valeur récupérée, elle est stockée dans la rubrique. Ce qui permet de la « figer », donc de figer la facture et d’éviter toute modification de cette dernière si l’on modifie le prix unitaire des produits. Cela permet aussi de modifier le prix unitaire sur une facture, sans que cela le modifie dans la table PRODUITS, si vous souhaitez appliquer un prix « à la tête du client » !

Si vous avez aussi besoin de figer la désignation du produit, il faut là encore créer une rubrique dans la table LIGNES DE FACTURES avec une référence externe.

facturation_ref_ext2.jpg

Rappelez-vous de ceci : dès que vous avez besoin de figer une valeur à un instant t, utilisez l’option référence externe en entrée automatique.

Ce fonctionnement occasionne bien évidemment des doublons, mais ceci est nécessaire à l’exploitation des données.

 

Un petit souvenir de l’ancien temps…

Pour celles et ceux qui se souviennent des versions antérieures à FileMaker Pro 3, c’était, à l’époque, la seule option possible pour récupérer une valeur d’un autre fichier. Nous n’avions dans ces anciennes versions que la possibilité d’avoir 1 table par fichier et aucun lien relationnel… À la belle époque ;)

Pour celles et ceux qui se souviennent des versions 3 à 6, la référence externe était une des possibilités qui nous permettait d’obtenir une valeur d’un fichier de troisième niveau. Car dans ces versions, si un fichier A était lié à un fichier B lui-même lié à un fichier C, si A devait voir ou utiliser une valeur de C, on utilisait une référence externe dans B… À la belle époque là encore ;)

 

C’est tout pour aujourd’hui

Je vous laisse méditer sur le sujet, en attendant le prochain… Si vous souhaitez que j’aborde un point ou un sujet en particulier, n’hésitez pas en m’en faire part. En attendant, je vous souhaite une excellente fin de semaine.

David Julot

Après une période d’absence, me revoici aujourd’hui pour vous parler de d’iPhone, Bento 2 et FileMaker Pro 10. Mon propos d’aujourd’hui concerne la synchronisation du carnet d’adresses et du calendrier de l’iPhone, ou du moins du Carnet d’adresses et d’iCal de Mac OS X.

 

Mais pourquoi Bento 2 dans le titre… ?

Ceux qui possèdent un iPhone, ou un iPod Touch, et qui sont en environnement Mac OS X savent que les contacts sont synchronisés avec le carnet d’adresses de leur ordinateur. Idem pour le calendrier de leur appareil et le logiciel iCal.

Je vous parle de l’iPhone, mais pour ce qui suit il n’est pas nécessaire d’en posséder un, par contre il vous faut être en environnement Mac OS X.

 

Une fonctionnalité de FileMaker Pro 10

Nous allons découvrir une nouvelle fonctionnalité de FileMaker Pro 10 : l’importation de données de Bento 2. Vous savez, le « petit » logiciel de base de données personnelles de FileMaker ! Ce produit, pour vous le présenter brièvement, accède et utilise les données du Carnet d’Adresses, d’iCal et de Mail d’Apple, il permet même de lier des informations de ces trois différentes sources. Si vous souhaitez en savoir plus sur ce produit, je vous propose :

Nous allons donc utiliser Bento 2 pour récupérer dans FileMaker Pro 10 des données provenant du carnet d’adresses et d’iCal d’Apple. Voici le schéma de principe :

importation_schema.jpg

Il vous faut donc les ingrédients suivants : un Bento 2 et un FileMaker Pro 10.

Lorsque vous utilisez Bento 2, ce dernier accède directement aux données du Carnet d’adresses et d’iCal d’Apple, sans importation/exportation, il travaille directement avec les données, une modification effectuée dans les logiciels d’Apple se voit immédiatement dans Bento 2, et inversement.

Qui plus est, si vous possédez un iPhone ou iPod Touch d’Apple, les données du téléphone et de l’ordinateur se synchronise, donc Bento 2 aussi.

FileMaker Pro 10, quant à lui, ne sait qu’importer des données de Bento 2 :

  • soit à l’ouverture d’une source Bento 2 pour générer une nouvelle base FileMaker ;
  • soit à l’importation d’une source Bento 2 pour mettre à jour une base FileMaker existante.

 

Créer une base à partir d’une source Bento 2

Pour cela :

  1. Ouvrir FileMaker Pro 10 ;
  2. Dans la boîte de dialogue Démarrage rapide FileMaker, sélectionner l’option Création ;
  3. Choisir l’option Créer à partir d’une base existante et sélectionner l’item Source Bento dans le menu local ;
  4. Cliquer sur le bouton OK ;
  5. Sélectionner la bibliothèque Bento souhaitée, par exemple Carnet d’adresses, puis la collection, si vous souhaitez tout récupérer sélectionner Bibliothèque entière ;
  6. Cliquer sur le bouton Continuer… ;
  7. Enregistrer la nouvelle base de données.

Vous obtenez ainsi une base avec le contenu complet du Carnet d’adresses d’Apple.

 

Mise à jour d’une base existante

Je ne vous détaille pas l’importation du Carnet d’adresses d’Apple dans une base FileMaker, cela utilise la fonction d’importation de ce dernier et cela reprend les étapes précédentes. Je vais donc seulement présenter la mise à jour d’une base existante.

Le problème avec les mises à jour de données, ou synchronisation, c’est qu’il nous faut une clef primaire, un identifiant unique si vous préférez, qui nous permet d’identifier de manière sûre chaque enregistrement. Problème, c’est que nous n’avons ce type d’information dans le Carnet d’adresses, donc encore moins dans Bento 2.

Pour cela :

  1. Ouvrir la base de données FileMaker Pro avec laquelle vous souhaitez mettre à jour les données avec le Carnet d’adresses d’Apple ;
  2. Choisir l’article de menu Fichier > Importer des enregistrements > Source de données Bento… ;
  3. Sélectionner la bibliothèque Bento souhaitée, par exemple Carnet d’adresses, puis la collection, si vous souhaitez tout récupérer sélectionner Bibliothèque entière ;
  4. Cliquer sur le bouton Continuer… ;
  5. Dans la boîte de dialogue Ordre d’importation des rubriques, sélectionner l’option Mettre à jour enreg. correspondants dans le jeu trouvé ;
  6. Sélectionner l’option Ajouter données restantes en tant que nouv. enreg. ;
  7. Mettre en correspondances les rubriques, en déplaçant celle de votre base de données FileMaker ;
  8. Cliquer sur l’icône Flèche qui apparaît entre les rubriques prénom et nom, pour le changer en icône égale, pour spécifier les critères de mise à jour (à défaut de clef primaire)
    bento2FMP10_01.png
    Bento2FMP10_002.jpg
     
  9. Cliquer sur le bouton Importer.

On peut, bien évidemment, mettre en place un script d’importation avec les paramètres précédents et le faire exécuter à l’ouverture de la base de données FileMaker, vous aurez ainsi une base à jour automatiquement.

Seul regret, c’est que nous n’avons pas les moyens de mettre à jour les données de Bento 2, donc du Carnet d’adresses d’Apple, directement depuis FileMaker Pro aussi simplement que ça.

 

C’est tout pour aujourd’hui

Voilà pour mon retour après ces quelques mois d’absence. Je remercie tous ceux qui m’ont adressé des messages pendant cette période. En attendant, je vous donne rendez-vous très prochainement sur ce blog pour la suite de mes chroniques.

David Julot

fmconf2009.png

Je vous propose aujourd’hui, en direct de Paris, Roissy-en-France plus exactement, deux petites astuces pour FileMaker Pro 10 que je trouve très utiles.


Première astuce : comment 1 clic souris remplace 2 raccourcis clavier…

Comment en un clic créer un nouveau modèle alors que l’on se trouve en mode utilisation. Cette astuce m’a été soufflée par TomK, hier lors de la conférence. En temps normal, il faut :

  1. Choisir l’article de menu Affichage > Mode Modèle ;
  2. Choisir l’article de menu Modèles > Nouveau modèle/rapport…

Ou pour les puristes des raccourcis clavier :

  • sous Mac : cmd + L puis cmd + N
  • sous Windows : ctrl + L puis ctrl + N

Qu’elle est donc cette astuce, qui permet de remplacer l’appuis sur quatre touche par un seul clic ? Il suffit en fait de configurer la barre d’outils État et de rajouter la fonction nouveau modèle. Pour cela :

  1. Ouvrir FileMaker Pro 10 ;
  2. Choisir l’article de menu Affichage > Personnaliser la barre d’outils Etats… ;
  3. Glisser l’élément Nouveau modèle/rapport sur la barre d’outils d’État
    Image_1.png
     
  4. Cliquer sur le bouton Terminer.

Vous aurez ainsi une barre d’outils d’État avec cet élément et il suffira donc de cliquer sur cet élément à chaque fois que vous aurez besoin de développer un nouveau modèle.

 

Deuxième astuce, ou comment utiliser le camembert à d’autre faim !

J’ai trouvé cette astuce complètement par hasard. Si vous avez ouvert FileMaker Pro, vous avez dû remarqué la nouvelle barre d’État, cette dernière comporte maintenant un camembert :

image_002.jpg

Ce camembert ne sert pas seulement à afficher le rapport entre le nombre d’enregistrements trouvés et le nombre d’enregistrements total mais aussi à inverser le groupe d’enregistrements visualisés. Un clic sur le camembert correspond à l’article de menu Enregistrements > Afficher enreg. trouvés uniq.

 

C’est tout pour le moment…

La conférence commence à peine, le week-end va être très intense… je vous retrouve très bientôt…

David Julot

Aujourd’hui, c’est graphe des liens… Je vais vous montrer que ce graphe des liens reflète vos décisions (ou choix) dans les options de rubrique.

Prenons les cas d’une gestion de facturation. Nous avons, pour ce type de gestion, au moins quatre tables : CLIENTS, FACTURES, LIGNES et PRODUITS. Après une longue, très longue, analyse, nous avons le schéma relationnel suivant :

sch_ma01.png

J’ai utilisé le code couleur suivant :

  • Rouge pour les clefs primaires, rubriques ne contenant que des valeurs uniques dans une table, permettant d’identifier sûrement un enregistrement.
  • Vert pour les clefs étrangères, rubriques servant à « attacher » un ou plusieurs enregistrements à un enregistrement d’une autre table.

Nous remarquons que le lien entre les tables CLIENTS et FACTURES est de type 1 vers N, ou N vers 1 suivant qu’on démarre de la table FACTURES. Sur le schéma relationnel, nous le symbolisons par :

sch_ma02.png

Et nous retrouvons ce type de lien sur l’ensemble de notre schéma relationnel. Une fois le schéma relationnel établi sur le papier, nous pouvons passer à la réalisation sous FileMaker Pro. Je vous passe les détails pour la réalisation du fichier, des tables, des rubriques et du graphe des liens.

Là, vous devriez remarquer que je parle de « graphe des liens » et non plus de « schéma relationnel ». Regarder la figure suivante :

figure03.png

C’est le graphe réalisé avec FileMaker Pro, regardons d’un peu plus près le lien entre les occurrences de tables CLIENTS et FACTURES :

figure04.png

Si vous regardez bien, vous remarquerez que FileMaker schématise le lien avec une représentation de lien de type N vers N :

sch_ma05.png

Pourquoi diable FileMaker Pro nous représente un lien de type N vers N alors que nous avons normalement une relation entre CLIENTS et FACTURES de type 1 vers N ? De plus, nous avons aucun moyen sur le graphe des liens de définir le type de lien. En fait, ce n’est pas sur le graphe des lien que nous pouvons définir le type de lien. Car le graphe des liens de FileMaker Pro reflète les options appliquées aux rubriques.

Occupons-nous de la table CLIENTS. La rubrique N° client est, sur notre schéma relationnel, une clef primaire, à savoir qu’elle doit contenir une valeur unique. Nous pouvons alors définir une option de contrôle sur cette rubrique de type Unique :

  1. Fichier > Gérer > Base de données… ;
  2. Onglet Rubriques ;
  3. Table CLIENTS ;
  4. Sélection de la rubrique N° client, puis bouton Options… ;
  5. Onglet Contrôle ;
  6. Option Unique ;
  7. Validation.

Si maintenant, nous allons voir le graphe des liens, nous nous apercevons que le type de lien schématisé par FileMaker Pro à changé :

figure06.png

Nous avons bien maintenant un lien de type 1 vers N et non plus un lien de type N vers N. Si maintenant nous aurions choisi une option d’entrée automatique de type numéro de série au lieu d’une option de contrôle de type unique pour la rubrique N° client, FileMaker Pro aurait schématisé le lien de type 1 vers N.

Nous voyons donc que FileMaker Pro change le type de lien dans le graphe des liens pour tenir compte, ou pour refléter, les options apportées aux rubriques. C’est donc un moyen simple pour savoir si on n’a pas oublié une option sur une rubrique.

Il reste encore une autre schématisation. Imaginons que nous souhaitons avoir la liste des factures pour une année donnée pour chaque client. Nous ajoutons alors une rubrique Année, de type nombre, dans la table FACTURES, pourquoi pas de type calcul, avec un résultat de type nombre et avec la formule ANNEE( Date ). Ajoutons maintenant une rubrique Année dans la table CLIENTS, de type nombre, mais avec l’option Globale, pour nous permettre d’avoir la même année quelque soit l’enregistrement client. Établissons, maintenant un lien entre les deux nouvelles rubriques, et nous obtenons le schéma suivant :

figure07.png

Évidemment, pour éviter de modifier le lien existant entre les occurrences de tables CLIENTS et FACTURES, nous devons donc ajouter une deuxième occurrences de tables pour FACTURES, nommée FACTURES ANNÉE. Et là, on voit que le type de lien schématisé par FileMaker Pro est différent, nous avons un lien du type :

sch_ma06.png

C’est un type de lien qui nous informe que la rubrique Année de la table CLIENTS a l’option stockage global. Mais cela signifie aussi que le lien n’est pas bi-directionnel mais uni-directionnel. C’est-à-dire que la table CLIENTS peut connaître les enregistrements de l’occurrence de table FACTURES ANNÉE, alors que l’occurrence de table FACTURES ANNÉE ne peut pas connaître les enregistrements de CLIENTS.

Voilà pourquoi je vous indiquais en introduction que le graphe des liens de FileMaker Pro reflètes les options de rubriques.

 

C’est tout pour aujourd’hui…

En attendant la prochaine chronique, qui sera ma cinquantième, hé oui déjà… Je vous souhaite une excellente semaine ! Et j’attends comme d’habitude vos remarques, commentaires ou suggestions.

David Julot

server_icon.jpgOn ne le répétera jamais assez, FileMaker Server est non seulement un programme dédié à l’hébergement de bases de données FileMaker Pro, mais c’est surtout un programme qui permet l’automatisation des sauvegardes de vos données.

Nous allons voir dans cette chronique la mise en place de sauvegardes avec FileMaker Server.

Tout le monde connaît l’utilité de FileMaker Server pour l’hébergement de bases de données FileMaker Pro pour que plusieurs utilisateurs travaillent simultanément. Par contre peu de monde connaît la possibilité d’effectuer automatiquement des sauvegardes, alors que cette fonctionnalité est disponible depuis les premières versions de FileMaker Server.

 

Pourquoi faire des sauvegardes ?

C’est vrai ! Puisque les données sont enregistrées automatiquement par FileMaker pourquoi effectuer alors des sauvegardes ?

Le fait d’enregistrer les données et les sauvegardes automatisées de FileMaker Server sont deux choses bien différentes. L’enregistrement est le principe même d’un gestionnaire de bases de données qui utilise le disque dur comme mémoire, alors que la sauvegarde consiste à une duplication des données pour pouvoir les réutiliser en cas de problème.

 

Ce que propose FileMaker Server, par défaut

Par défaut, lorsque vous installez FileMaker Server et si vous ne changez pas les paramètres, vous aurez alors trois programmes de sauvegarde de vos bases de données, dont deux inactivés.

image1.png

Pour vous en rendre compte :

  1. Ouvrir la console d’administration ;
  2. Choisir l’article de menu Afficher > Programmes.

Le programme activé effectue une sauvegarde quotidienne de vos bases de données dans le répertoire par défaut, à savoir :

  • sous Mac OS X :Macintosh HD:Bibliothèque:FileMaker Server:Data:Backups:
  • sous Windows :C:\program files\FileMaker\FileMaker Server\Data\Backups\

C’est le minimum, mais cela n’est pas suffisant. En effet, un programme de sauvegarde doit tenir compte de plusieurs paramètres, comme :

  • le nombre d’enregistrements créés et/ou mis à jour quotidiennement ;
  • du nombre d’utilisateurs ;
  • l’importance de vos données ;
  • etc.

N’oubliez pas non plus, qu’une sauvegarde écrase la précédente !

 

Ce que je vous propose

Je vous propose un programme de sauvegarde qui vous permettent, dans le pire des cas, de perdre une demi journée de travail et un recul d’une semaine. Pour cela, nous allons créer 10 répertoires dans le dossier Backups de FileMaker Server : lundi midi, lundi soir, mardi midi, mardi soir, mercredi midi, mercredi soir, jeudi midi, jeudi soir, vendredi midi et vendredi soir.

ATTENTION ! si vous êtes sur Mac OS X vous devez faire attention aux autorisations d’accès du système d’exploitation qui doivent permettre à FileMaker Server de lire et d’écrire dans ces répertoires.

Une fois les répertoires créés, il faut maintenant créer 10 programmes de sauvegarde, un par demi jour. Pour cela :

  1. ouvrir la console d’administration de FileMaker Server ;
  2. choisir l’article de menu Afficher > Programmes ;
  3. choisir l’item Créer un programme… dans le menu local Actions, puis cliquer sur le bouton Exécuter l’action ;
    image2.png
     
  4. sélectionner l’option Sauvegarder les bases de données, puis cliquer sur le bouton Suivant ;
  5. sélectionner l’option Chaque semaine, puis cliquer sur le bouton Suivant ;
  6. sélectionner l’option Toutes les bases de données, puis cliquer sur le bouton Suivant ;
  7. dans le champ Dossier de sauvegarde, à la suite de .../Backups/ ajouter lundi midi/, puis cliquer sur le bouton Valider ;
  8. sélectionner l’option Vérifier l’intégrité de la sauvegarde, puis cliquer sur le bouton Suivant ;
  9. sélectionner Lundi et définir l’heure à 12:00, puis cliquer sur le bouton Suivant ;
  10. dans le champ Nom du programme saisir lundi midi, par exemple, puis cliquer sur le bouton Suivant ;
  11. désactiver la notification par email, sauf si vous avez défini un serveur smtp dans les paramètres de FileMaker Server, puis cliquer sur le bouton Suivant ;
  12. vérifier que l’option Activer ce programme est bien sélectionné, puis cliquer sur le bouton Terminer ;
  13. refaire les étapes 3 à 12 pour chaque demi journée.

Un conseil, vérifiez que les programmes s’exécutent correctement, pour cela pas la peine d’attendre une semaine, le mieux est de les exécuter dès maintenant, pour cela :

  1. sélectionner dans la liste des programmes un programme ;
  2. choisir l’item Exécuter un programme maintenant dans le menu local Actions, puis cliquer sur le bouton Exécuter l’action ;
  3. vérifier dans la colonne Etat dernière exécution que OK apparaît bien ;
  4. refaire les 3 premières étapes pour chaque programme.

 

Où sauvegarder les bases de données ?

Les bases sauvegardées par FileMaker Server doivent l’être sur un disque interne à l’ordinateur où est exécuté FileMaker Server. C’est le premier niveau de sauvegarde, vous devez maintenant mettre en place une procédure de sauvegarde externe, vous devez mettre en lieu sûr vos sauvegardes. Imaginer un vol, une inondation ou un incendie, pour cela utilisez un programme tel que Retrospect. En faisant attention que ce sont les sauvegardes effectuées par FileMaker Server qu’il faut utiliser pour les sauvegardes externes et non les bases de données en cours d’utilisation !

 

C’est tout pour cette semaine !

À la semaine prochaine pour une nouvelle chronique. En attendant, j’attends vos remarques, vos suggestions et vos conceils.

David Julot


logo.pngJe vais de découverte en découverte… Cette semaine c’est autour de FileMaker Pro 9, de Microsoft Excel 2008 et de Microsoft Word 2008, le tout sous Mac OS X. Et je pourrais ajouter dans le bateau un quatrième logiciel : FileMaker Server 9 !

Jusqu’à la version 2004, Microsoft Office pour Mac ne connaissait que FileMaker 5, 5.5 et 6. Mais depuis la nouvelle version, Microsoft Office 2008 pour Mac, corrige le tir et reconnaît enfin FileMaker 7, 8, 8.5 et 9 !


Vous l’aurez compris, je ne vais parler que de la version Mac de Microsoft Office. La version Windows ne connaît toujours pas FileMaker sur son environnement… Alors que dans le monde Mac ils se sont rendu à l’évidence, FileMaker est omniprésent sur la plateforme de sa maison mère: Apple.

Microsoft Office 2008 pour Mac, comme dans la version précédente, permet d’intégrer les données d’une base FileMaker dans un document Word ou Excel. À la différence, déjà évoquée, que maintenant la suite de Microsoft reconnaît les dernières versions de FileMaker.

Vous allez me dire que l’on peut exporter des données à partir de FileMaker Pro directement dans des formats natifs Microsoft :

  • enregistrement et l’exportation au format Excel ;
  • l’exportation au format mailing (merge) pour Word.

Oui, mais lorsque l’on ai déjà dans un document de travail Excel ou Word, on peut directement aller se servir à la source.

 

Microsoft Word

MSWD.pngLe logiciel de traitement de texte de l’éditeur de Richmond permet de réaliser des mailings (publipostages) avec des données contenues dans des bases FileMaker Pro, il n’accède aux bases de données FileMaker Pro seulement si ces dernières sont locales. Il reconnaît le format .fp7 de FileMaker.

La procédure est très simple :

  1. Ouvrir Microsoft Word 2008 pour Mac ;
  2. Choisir l’article de menu Outils > Gestionnaire de publipostage ;
  3. Pour la 1ère étape, choisir le type de document que vous souhaitez générer, par exemple Lettres Types ;
  4. Pour la 2e étape, choisir dans le menu local Obtenir la liste l’item FileMaker Pro…
    Microsoft_Word_cranSnapz001.png
  5. Dans le sélecteur de fichier, choisir la base de données FileMaker Pro dont on souhaite extraire des données, puis cliquer sur le bouton Sélectionner ;
  6. L’Assistant Importation FileMaker Pro apparaît à l’écran :
    Microsoft_Word_cranSnapz005.png
    Et là on s’apperçoit que Microsoft n’utilise pas le même vocabulaire que FileMaker, je pense que les traducteurs de Microsoft n’ont pas utilisé de version traduite de FileMaker… Donc nous avons dispositions au lieu de modèles, tableaux au lieu de tables (ou occurrences de table) et champ pour rubrique.
  7. Sélectionner les rubriques (champs) à utiliser dans lors du publipostage, puis cliquer sur le bouton Suivant ;
    Microsoft_Word_cranSnapz004.png
  8. À cette étape, sélectionner les critères d’extraction (recherche) de données de la base, pour n’utiliser que celles souhaitées, puis cliquer sur le bouton Terminer ;
    ATTENTION ! Si vous aucun enregistrement n’est trouvé, alors Microsoft génère une erreur AppleEvent et peut planter royalement… tout en indiquant que c’est de la faute à FileMaker !!!
    Microsoft_Word_cranSnapz006.png
  9. Il suffit d’utiliser ensuite le gestionnaire de publipostage de Microsoft Word.
    Microsoft_Word_cranSnapz007.png

Vous l’aurez compris, Microsoft Word 2008 pour Mac utilise AppleScript pour dialoguer avec la base de données FileMaker Pro. Cela implique que vous devez avoir FileMaker Pro installé sur le poste. Il n’est pas nécessaire qu’il soit lancé.

 

Microsoft Excel

XCEL.pngConcernant Microsoft Excel 2008 pour Mac, on peut aussi intégrer des données de bases FileMaker dans ses feuilles de calcul. Les données peuvent être issues d’une base de données locale ou hébergée par FileMaker Server. Dans les deux cas, il est impératif d’avoir FileMaker Pro d’installé sur son poste, car comme pour Microsoft Word, Excel utilise AppleScript pour récupérer les données.

La procédure est la suivante :

  1. Ouvrir Microsoft Excel 2008 pour Mac ;
  2. Choisir l’article de menu Données > Données externes > Importer à partir de FileMaker Pro…
    ou l’article de menu Données > Données externes > Importer à partir du serveur FileMaker… ;
  3. Dans le cas d’une base de données locale, dans le sélecteur de fichier, choisir la base de données FileMaker dont on souhaite extraire les données et cliquer sur le bouton Sélectionner, et passer à l’étape 5 ;
  4. Dans le cas d’une base de données hébergée par FileMaker Server, vous passez par le sélecteur de serveurs de FileMaker Pro pour choisir le serveur hébergeant la base de données ;
    FileMaker_Pro_cranSnapz002.png
  5. Et après les étapes identiques à celle de Microsoft Word (étapes 6 à 8), insérer les données à l’endroit souhaité dans la feuille de calcul ;
    Microsoft_Excel_cranSnapz001.png
  6. À tout moment on peut actualiser les données, en choisissant l’article de menu Données > Actualiser les données.

 

Pour en savoir plus…

Si vous souhaitez en savoir plus sur ces fonctionnalités, je vous suggère les liens suivants :

 

C’est tout pour aujourd’hui…

Je vous retrouve la semaine prochaine pour une nouvelle chronique. En attendant, je vous souhaite un excellent week-end et une très bonne semaine.

David Julot

FMPlug.pngUne petite révolution est arrivée avec le déploiement automatique de plug-ins (modules) depuis FileMaker Server 9 et la fonction AutoUpdate. Une petite révolution ? Oui ! Qui plus est, non documentée par l’éditeur, et que j’ai découverts récemment…

Cela intéressera tous ceux qui utilisent la fonction AutoUpdate pour le déploiement automatique de plug-ins depuis FileMaker Server 9.


Mais avant de vous dire qu’elle est cette petite révolution, je vais vous expliquer ce qu’est l’AutoUpdate de FileMaker Server, car je ne pense pas que tout le monde sache exactement ce que permet cette fonctionnalité.

 

Qu’est-ce que le déploiement automatique ?

Lorsque vous développez une application qui utilise peu ou prou des plug-ins (modules), arrive le jour fatidique de l’installation. Non seulement il faut installer les licences FileMaker Pro, mais les plug-ins aussi. Ces derniers doivent être placés dans le dossier Extensions se trouvant au même niveau que FileMaker Pro :

  • Mac OS : Macintosh HD:Applications:FileMaker Pro:Extensions:
  • Windows : C:\program files\FileMaker\FileMaker Pro\Extensions\

Vous allez me dire que ce n’est pas très grave, puisqu’on installe FileMaker Pro on en profite pour installer le ou les plug-ins. Oui, c’est vrai, mais là je vous parle du cas favorable. Mais si les licences FileMaker Pro sont déjà installées ? On risque d’oublier un ou deux postes, qui ne pourront pas alors utiliser convenablement votre application. Et le jour où un nouveau poste est à installer, la personne en charge de l’installation ne saura peut-être pas qu’il faut aussi ajouter des plug-ins !

D’où la fonction fort pratique proposée par FileMaker Server : l’AutoUpdate, ce que je nomme le déploiement automatique. C’est une fonction apparue avec la version 5.5. Le principe en est resté le même.

Le déploiement automatique permet de stocker les plug-ins côté serveur (FileMaker Server). Et lorsqu’une base de données à besoin de tel ou tel plug-in, absent du poste client (FileMaker Pro), alors il est automatiquement téléchargé depuis le serveur sur le poste client, et sans redémarrer FileMaker Pro, et encore moins la base de données, le plug-in est aussitôt activé et prêt à l’emploi.

 

Comment ça marche ?

Le principe est simple, il faut :

  • FileMaker Server : c’est lui qui envoie, sur demande, le plug-in souhaité. Il faut pour cela activer l’option Autoriser les clients FileMaker Pro à télécharger les mises à jour automatiquement de l’onglet Clients FileMaker Pro de la configuration Serveur de bases de données de la console d’administration de FileMaker Server 9.
  • FileMaker Pro ou FileMaker Pro Advanced et son plug-in AutoUpdate : c’est ce plug-in qui offre la possibilité de télécharger les plug-ins depuis FileMaker Sever. Ce plug-in est installé et activé par défaut lors de l’installation de FileMaker Pro ou FileMaker Pro Advanced.
  • Une base de données hébergée par FileMaker Server : c’est par son intermédiaire que le plug-in AutoUpdate sait sur quel serveur chercher les plug-ins.

Les plug-ins sont installés dans un répertoire spécifique de FileMaker Server.

En fait, le déploiement automatique s’effectue par l’intermédiaire d’un script, que vous développez, et qui doit être exécuté lors de l’ouverture de votre base de données.

ATTENTION ! Je l’oublie souvent moi-même, lorsque vous testez ce script d’ouverture, il faut absolument que la base de données soit hébergée par FileMaker Server et ouverte à distance.

Je ne vous donne pas le script en question, car il est fourni par FileMaker. Si vous n’arrivez pas à mettre la main dessus, voyez les liens en bas de cette chronique…

Mais voici un algorithme d’un script de déploiement :

algorithme.png

Là encore, tout est expliqué dans le manuel de FileMaker Server.

Pour information, le plug-in AutoUpdate ne permet que le téléchargement et l’activation de plug-ins, on ne peut pas l’utiliser pour déployer autre chose, comme par exemple un fichier FileMaker Pro.

 

Où est donc la révolution ?

C’est vrai ! Je vous ai parlé d’une petite révolution… En effet, depuis FileMaker Pro 5.5, le plug-in AutoUpdate téléchargeait les plug-ins dans le répertoire Extensions situé au même niveau que le programme FileMaker Pro. Le plug-in AutoUpdate de la version 9 : non ! Et c’est là qu’est la révolution ! Le plug-in, et donc FileMaker Pro 9, utilise un autre emplacement :

  • Mac OS : Macintosh HD:Utilisateurs:Nom d'utilisateur:Bibliothèque:Application Support:FileMaker:Extensions:
  • Windows XP : c:\Document Settings\Nom d'utilisateur\Local Settings\Application Data\FileMaker\Extensions\
  • Windows VISTA : c:\Users\Nom d'utilisateur\AppData\Local\FileMaker\Extensions\

REMARQUE : sous Windows VISTA le répertoire AppData est invisible.

Je l’ai découvert lorsque j’ai voulu tester, pour un développement particulier, le déploiement automatique. J’ai voulu rechercher un plug-in pour le supprimer et retester mon script, quelle ne fut pas ma surprise lorsque je n’ai pas trouvé le plug-in en question, alors que FileMaker Pro le voyait toujours lui ! J’ai donc cherché, avec la fonction recherche du système d’exploitation, le plug-in, car il devait forcément être présent sur mon poste, et c’est là que j’ai découvert ce nouveau répertoire de FileMaker Pro. Ceci n’est pas documenté dans les manuels ou aide de FileMaker. Mais voici le fruit de mes réflexions :

  • Ce nouveau répertoire est commun à FileMaker Pro 9 et FileMaker Pro 9 Advanced, cela signifie que le téléchargement ne s’effectue qu’une seule fois si on utilise les deux versions sur son poste. Donc on gagne du temps à ne pas télécharger deux fois le même plug-in. Et je pense que cela évitera de télécharger les plug-ins lors de mises à jour de FileMaker Pro.
  • Si le plug-in est déjà installé dans le répertoire Extensions situé au même niveau que le programme FileMaker Pro, alors le téléchargement ne s’effectue pas.
  • FileMaker fait de plus en plus appel aux standards de développement, c’est le cas pour l’utilisation du répertoire Application Support sous Mac OS X.

Quand je dis que FileMaker ne documente pas ce nouvel emplacement, ce n’est pas tout à fait vrai, il existe une note technique (en anglais) sur ce sujet. Vous la trouverez dans les liens ci-après.

 

Ressources…

Voici donc les liens internet pour approfondir vos connaissances sur le sujet :

David Julot

Me revoici de retour pour ma chronique hebdomadaire. Je sais que certains d’entre vous sont impatients de me retrouver, et je tiens à m’excuser pour cette absence de quelques mois due à beaucoup de travail !

Aujourd’hui, je vais vous parler du conditionnel ! Et plus particulièrement de la condition…


Dès que l’on travaille dans l’automatisme, à un moment ou un autre il faut que le système puisse prendre une décision. «Dois-je faire çà dois-je faire ceci ?» Mais pour prendre une décision, il faut se poser une question. Et comme les systèmes automatiques ne sont pas d’une grande intelligence, il faut qu’ils puissent se poser des questions simples, auxquelles ils ne pourront y répondre que par VRAI ou par FAUX, système binaire!

FileMaker Pro peut comporter des automatismes, dans :

  • les rubriques de type calcul,
  • les scripts (programmes),
  • les fonctions personnalisées,
  • le formatage conditionnel,
  • et d’une manière générale dans toutes les fonctions de FileMaker Pro intégrant une formule de calcul.

En programmation, une des formulations des questions passe par la fonction SI. Dans FileMaker Pro nous avons trois fonctions décisionnelles :

  • SI : à une condition nous avons deux résultats possibles. Un résultat si la condition est vraie et un résultat si la condition est fausse.
  • CAS : qui retourne un résultat à la première condition vraie, sinon retourne un résultat dans le cas où toutes les conditions sont fausses.
  • CHOIX : qui ne comporte pas à proprement parlé de condition. Retourne seulement le énième résultat choisit.

 

Occupons-nous du cas SI !

La syntaxe de la fonction SI est la suivante :

SI ( condition ; résultat si vrai ; résultat si faux )


Nous voyons ici qu’à une condtion correspond toujours deux résultats possibles. Cela vous semble évident ? Pour ceux qui développent des scripts, je suis sûr que vous avez une construction du type :

SI[ condition ]
    résultat si vrai
Fin de si


Alors que la syntaxe devrait être la suivante :

SI[ condition ]
    résultat si vrai
Sinon
    résultat si faux
Fin de si

Et j’entends déjà les commentaires du genre : «mais la condition ne peut être que vrai, il n’y a jamais dans mon cas de condition fausse…» Alors pourquoi mettre une condition, s’il ne peut y avoir qu’une seule réponse, c’est que vous attendez une confirmation ?!

Mais revenons à la fonction SI. Cette fonction, quelle soit utilisée dans une formule de calcul ou dans un script, elle a besoin d’une condition. Mais qu’est-ce qu’une condition ?

Une condition n’est plus ni moins qu’une comparaison. On compare deux valeurs :

  • Sont-elles égales ? On utilise alors l’opérateur = (égale).
  • Sont-elles différentes ? On utilise alors l’opérateur (différent).
  • L’une est-elle supérieure à l’autre ? On utilise alors l’opérateur > (supérieur).
  • L’une est-elle supérieure ou égale à l’autre ? On utilise alors l’opérateur (supérieur ou égale).
  • L’une est-elle inférieure à l’autre ? On utilise alors l’opérateur < (inférieur).
  • L’une est-elle inférieure ou égale à l’autre ? On utilise alors l’opérateur (inférieur ou égale).

La condition a la syntaxe suivante :
valeur opérateur valeur
 
En sachant qu’une valeur peut-être une valeur de type constante ( 12, « texte » ), une rubrique, le résultat d’une fonction ou d’une formule.

Pour rappel : nous mettons entre guillemets le texte pour le différentier d’un nom de rubrique.

Nous pouvons alors avoir dans une formule de calcul les exemples suivants :

  • SI ( rub = "" ; "vide" ; "non vide" ) : dans le cas où la rubrique rub est vide alors on retourne le texte « vide », dans le cas contraire on retourne le texte « non vide ». On compare ici deux valeurs, une rubrique et une constante.
  • SI ( ESTVIDE( rub ) = 1 ; "vide" ; "non vide" ) : dans le cas où la rubrique rub est vide alors on retourne le texte « vide », dans le cas contraire on retourne le texte « non vide ». On compare ici le résultat d’une fonction (ESTVIDE) et une constante binaire.
  • SI ( ESTVIDE( rub ) ; "vide" ; "non vide" ) : dans le cas où la rubrique rub est vide alors on retourne le texte « vide », dans le cas contraire on retourne le texte « non vide ». On compare ici le résultat d’une fonction (ESTVIDE) et une constante binaire implicite. Dès que l’on omet la comparaison, on demande alors à FileMaker de vérifier si la valeur, la rubrique ou le résultat d’une fonction est vrai, ce qui correspond à = 1.

Dans le cas d’un script, pour l’action de script SI, on n’y met que la condition.

Pour ceux qui pensent que j’ai déjà traité ce sujet, ils ont peut-être raison… Cette chronique est juste le complément d’un de mes tous premiers billets («Cette semaine, la lettre K !»). Vous y trouverez d’ailleurs une explication détaillée sur la fonction CAS.

 

C’est tout pour aujourd’hui…

Voilà pour ma 45e chronique et mon retour après cette absence… En attendant, j’attends vos commentaires, remarques ou suggestions. En attendant je vous souhaite une excellente semaine.