Author: Fabrice Nordmann

  • Commander FileMaker au clavier (Mac OS X)/éviter les clignotements (Windows)

    Deux astuces en un fichier

    Commander FileMaker au clavier (Mac OS X)

    Suite à la FM Conf, j’ai reçu plusieurs demandes d’explication sur un aspect que j’avais abordé un peu vite : la possibilité de piloter l’interface de FileMaker 11 au clavier. Voici donc un petit addendum.

    Éviter les clignotements (Windows)

    Bien que FileMaker 11 ait grandement amélioré cet effet désagréable, les problèmes de clignotement sur PC sont toujours un frein à l’utilisation de l’action de script Rafraichir Fenêtre. Voici une technique toute simple qui règle ce problème.

    Télécharger

  • Transactions

    Transactions

    Voici certainement l’article le plus important depuis la création de 1-more-tube : les transactions dans FileMaker.

    Tout le mérite revient à Todd Geist, qui a exploré les techniques de transactions, et vous trouverez ses articles sur le sujet sur le site de Geist Interactive.

    Cet article est une introduction en français, qui permettra de comprendre l’intérêt que représentent les transactions, en termes d’intégrité des données et de performances.

    Si vous développez des bases de données pour FileMaker Go (la version de FileMaker pour iPhone et iPad), cette technique transactionnelle est tout simplement indispensable.

    Télécharger

  • Utiliser l’heure du serveur dans les logs

    Vous pensez déjà à conserver, pour chaque enregistrement, les dates et heures de création et modification ?

    Mais avez-vous pensé aux problèmes qu’engendrerait un éventuel décalage entre les réglages d’heure des différents postes clients ?

    Dans cette astuce, vous découvrirez comment pallier à ce problème et utiliser l’heure du serveur comme référence unique.

    Télécharger

  • Les fonctions XML au sein de FileMaker

    Les fonctions XML au sein de FileMaker

    “XML”, voilà un terme qui fait peur !

    Et pourtant, l’utilisation du XML est un grand facteur de simplification !

    Avec un temps d’apprentissage quasi-nul, vous ne pourrez plus vous passer des fonctions d’écriture et de traitement du XML au sein de FileMaker.

    Dans cette vidéo, nous explorons trois fonctions personnalisées simplissimes, qui changeront votre vie de développeur si vous ne les utilisez pas déjà.

    Passage de paramètres multiples et complexes, résultats de scripts structurés et utiles, mais également simplification du graphique relationnel. Voici quelques uns des principaux bénéfices de l’utilisation de ces fonctions.

    Télécharger

  • LayoutProperties à Montréal

    Nous relayons le communiqué du FMQC.CA, qui nous fait l’honneur d’organiser une conférence sur notre outil de développement Open Source, LayoutProperties

    Réunion du Regroupement FMQC.CA, le mardi 5 octobre 2010, à 18h30

    MONTRÉAL, 22 septembre 2010 — Le regroupement FMQC.CA est heureux de recevoir Vince Mennano de FM Nexus et Pierre Tremblay de Tremblay Services Conseils Informatiques inc. à titre de conférenciers invités lors de la prochaine réunion du regroupement portant sur les outils pour développeurs de solutions FileMaker. Tous les adeptes de la plateforme FileMaker™, utilisateurs ou développeurs, peuvent s’inscrire en ligne en complétant le formulaire d’inscription

    Sujet de la conférence : Inspector Pro 3.0 / Focus Framework / Web Services plug-in

    Présentateur : Vince Menanno, FM Nexus

    Description : FM ::Nexus Inspector est un outil de diagnostic, déboggage et documentation pour les bases de données FileMaker. La nouvelle version 3.0 de cet outil est maintenant 100% compatible avec FileMaker Pro 11. Réécrite à partir de zéro, l’application offre des performances améliorées ainsi qu’un nouvel engin de recherche rapide. En guise de complément pour les développeurs, le framework FOCUS utilisé comme solution de démarrage par BeezWax pour plusieurs projets sera également présenté aux participants. Cette présentation donnera des idées et des techniques que tous les développeurs peuvent appliquer immédiatement à leurs projets. Enfin, la présentation se terminera par une brève mise à jour concernant les plus récentes fonctionnalités introduites dans la nouvelle version du plugin FM ::Nexus Web Services permettant l’intégration de FileMaker avec d’autres systèmes.

    Sujet de la conférence : LayoutProperties

    Présentateur : Pierre Tremblay, Tremblay Services Conseils Informatiques inc.

    Description : FileMaker Pro est en soit un puissant outil de développement : la structure de la base de données et ScriptMaker. Imaginez un troisième outil, les propriétés de modèle, LayoutProperties.

    LayoutProperties est un outil open-source offrant plusieurs options telles la grandeur, le positionnement des fenêtres, l’unicité, l’élasticité, des transitions animées, et fenêtres modales conditionnelles, la définition de variables et l’exécution de scripts à partir du modèle.

    LayoutProperties est un outil qui permet d’offrir une interface utilisateur (UI) professionnelle et une expérience utilisateur optimale tout en simplifiant le développement et en éliminant bons nombres de tâches redondantes.

    Langue des présentations : Français

    Date et heure : mardi 5 octobre 2010, à 18h30

    Lieu : Le Monument National, Salle Marie-Vincent, 1170, boul. Saint-Laurent, Montréal (Québec) – Métro Place d’Armes ou St-Laurent

    Code d’accès pour la porte d’entrée : 7209

    Tarifs

    • Membres Or : gratuit (1 personne)
    • Membre Argent et Bronze : 10$
    • Non Membre : 15$

    Note : la présentation sera suivie d’un dîner informel, dans un restaurant à proximité, pour tous ceux intéressés à poursuivre la discussion

    Fondé en 2003, le regroupement FMQC.CA est un organisme à but non lucratif qui vise à regrouper tous les développeurs du logiciel FileMaker Pro™ en offrant des activités telles que des présentations technologiques ainsi que divers services aux membres.

    FileMaker, Inc. est le leader mondial des logiciels de bases de données simples à utiliser pour les groupes de travail. Des millions d’utilisateurs — particuliers, petite entreprises, personnel enseignant et chercheurs, groupes de travail et départements de grands comptes — gèrent des projets, des actifs, et des personnes avec FileMaker (http://www.filemaker.com)

  • Supprimer une rangée externe

    Dans cette astuce, nous fournirons une technique pour proposer un bouton de suppression unique sous (ou au dessus, ou à côté…) de la table externe, plutôt que sur chaque rangée.

    Gagnez de la place, et ne donnez plus à voir des interfaces aussi pleines de poubelles qu’une rue de Bruxelles un mardi soir !

    Télécharger

  • Fonctions personnalisées 2/2

    Fonctions personnalisées 2/2

    Suite et fin de notre série consacrée à la création de fonctions personnalisées.

    Dans cette vidéo, nous abordons la notion de tail recursion, explorons ses avantages et ses pièges.

    Nous apprenons également quelques trucs pour écrire des fonctions plus faciles à utiliser.

    Télécharger

  • Techniques FileMaker 11

    Techniques FileMaker 11

    Les fichiers présentés à la FMConf 2010

    Voici quelques techniques présentées lors de la FileMaker Conférence 2010 à Paris (Session 21 : FileMaker 11 pour développeurs)

    Les graphiques comme outil de design. Réaliser un fond en dégradé grâce à un graphique et une rubrique calculée.

    Télécharger

    Nouveaux déclencheurs

    Intervenir sur les données pour effectuer des traitements avant validation (par exemple faciliter la saisie d’une date

    Contrôlez la condition de fermeture d’une fenêtre sans passer par les menus personnalisés.

    Télécharger

    Menus dynamiques

    Fonction cachée de FileMaker Pro Advanced 11 ! Il est désormais possible de faire de vrais menus dynamiques.

    Télécharger

    Recherche rapide (QuickFilter)

    Une amélioration du fichier Clairvoyance, présenté lors de la FMConf 2009. Cette version est optimisée, traite tous les types de données, et tire partie de la recherche rapide.

    Télécharger

  • FileMaker 11 Techniques

    FMConference 2010 presentation technique files

    Here are some techniques presented during the 2010 FileMaker Conference in Paris (Session 21 : FileMaker 11 for developers)

    Charts as a design tool

    Embellish your layouts with gradients, using a chart object and a calculated field.

    Download

    New script triggers

    Process your data before it’s rejected by field validation options (e.g. make it easy to enter a date)

    Prevent closing of a window without a specific custom menu set.

    Download

    Dynamic menus

    FileMaker Pro Advanced 11 hidden feature ! You can now add real dynamic menus to the interface.

    Download

    Quick Filter

    An improvement of our Type-Ahead technique presented at FMConf 2009. Optimized for all datatype and takes benefit of FileMaker 11 QuickFind.

    Download

  • Fonctions personnalisées 1/2

    Fonctions personnalisées 1/2

    Les fonctions personnalisées, apparues avec FileMaker 7, ont changé la vie des développeurs.

    Pourtant, il n’est pas rare que ces fonctions fassent peur. Dans cette vidéo, nous verrons l’intérêt d’utiliser des fonctions personnalisées, et nous apprendrons à concevoir une fonction récursive.

    Si vous savez ce qu’est une boucle dans un script, vous verrez que les fonctions récursives ne sont pas plus compliquées !

    Télécharger

  • Mise à jour des données

    [vc_row bg_color=””][vc_column][vc_column_text][OBSOLÈTE] : FileMaker 17 intègre cette fonctionnalité nativement avec le Data Migration Tool (pour les membres FBA)

     

    Suite à la passionnante session de Vincenzo Menanno (FM Nexus) lors de la FM Conférence 2010 à Paris, qui traitait des différentes stratégies de mise à jour de solutions, 1-more-thing a décidé d’emboîter le pas et de lever le voile sa méthode.

    En effet, j’ai été frappé des ressemblances entre notre méthode et celle de Vincenzo, et les petites différences me font penser qu’échanger sur ce thème provoquera des réactions constructives, des ajustements nécessaires. Cet article se veut donc une proposition, et nous espérons apprendre aussi des réactions que vous ne manquerez pas de laisser ci-dessous.

    Tout d’abord, ciblons le cas de figure qui fait l’objet de cet article.

    La méthode exposée ci-après concerne les grosses mises à jour, et non les petits développements ponctuels, que l’on pourra faire directement sur le serveur, pendant que les utilisateurs travaillent (développement live) ou pendant les heures de fermetures, voire en reproduisant sur la version servie les modifications apportées sur une version de développement (développement offline).

    Dans ce cas de grosses mises à jour, nous avons une version de développement qui a été modifiée, et le but est d’importer les données depuis la version précédente. La version de développement est donc destinée à être installée sur le serveur après le processus de migration.

    Précisons également que comme Vincenzo Menanno, nous ne sommes pas convaincus par l’approche séparation données/interface, sauf dans certains cas bien précis. Aussi, nous partons du principe qu’il n’y a pas de différence majeure entre l’approche “en séparation” et l’approche classique, sachant qu’il est rare qu’un changement d’interface n’induise aucun changement dans la structure des données. Nous ne préciserons donc pas ci-après les différences qui peuvent théoriquement exister entre les deux approches.

    Etapes préliminaires

    Avant tout, il va de soi que le transfert massif de données sera beaucoup plus efficace sur un poste client (local) qu’à travers le réseau. Nous devons donc arrêter le serveur (du moins la solution concernée), et en faire une copie sur le poste local.

    Pour éviter toute confusion, nous plaçons ce fichier dans un dossier “Old”, situé au même niveau que la version de développement.

    Nous avons donc une arborescence du type :

    • Solution.fp7 (destination)
    • Old
      • Solution.fp7 (source)

    Mais ceci est en fait un peu trop simple. Lors du développement de la nouvelle version, nous avons peut-être eu besoin de créer des données dont nous aurons besoin, notamment dans les tables de référence (images, libellés, messages, code postaux ou pays…). Ces données ne figurent pas dans la source des données, mais dans la destination.

    Or, comme nous le verrons ci-après, une des premières choses à réaliser est de vider le fichier de destination de ses données. En fonction du volume de données, on pourra choisir de supprimer ces données ou de faire un clone du fichier de destination (beaucoup plus rapide si le fichier contient beaucoup de données, FileMaker étant extrêmement lent à cet exercice)

    Dans deuxième cas, nous créons un clone du fichier de destination dans un dossier Reference. L’arborescence est donc :

    • Solution.fp7 (destination)
    • Old
      • Solution.fp7 (source pour les données)
    • Reference
      • Solution.fp7 (source pour les références)

    Alternativement, on aura pu développer la solution avec un fichier spécifique pour les tables de référence, ce qui simplifie cette étape, mais pose des problèmes de gestion des comptes, comme toute solution multi-fichiers.

    Le renommage des rubriques

    Comme nous le verrons plus loin, la migration des données se fera pas un import basé sur les noms concordants des rubriques. Il est donc nécessaire de s’assurer que les rubriques n’ont pas changé de nom entre les deux versions.

    Pour cela, nous utilisons l’utilitaire FMDiff, qui permet en quelques minutes de comparer deux versions du fichier fp7. Notons que nous utilisons par ailleurs beaucoup Inspector ou BaseElements, mais ces outils d’analyse demandent un import du Rapport de Structure de Base de Données en XML, ce qui prend pas mal de temps et qui est ici inutile : seuls les renommages nous intéressent. Si vous devez investir dans un outil et un seul, il va néanmoins de soi que ces outils d’analyse vont plus loin que FMDiff.

    Une fois ce rapport produit, nous reproduisons scrupuleusement les renommages dans le fichier source.

    Pour plus de sécurité, nous comparons ensuite le fichier source modifié au fichier de destination (on n’est jamais à l’abri d’une faute de frappe)

    Les scripts de migration

    La migration de données est presque entièrement automatisable. Vous n’êtes pas obligé d’attendre la première migration effective pour développer ces scripts, bien que rien ne vous empêche de le faire à ce moment. Pensez toujours néanmoins qu’on travaille mieux sans stress, et qu’une mise à jour d’une solution tournant chez le client doit être faite rapidement, et donc génère pas mal de stress. Si possible, prévoyez donc déjà d’inclure ces scripts dès la première version.

    La première chose à faire sera une référence au(x) fichier(s) source(s), Old/Solution.fp7 et Reference/Solution.fp7

    Puis, dans le cas où l’on n’a pas fait de clône, on exécute dans le fichier de destination un script qui va supprimer toutes les données : MAJ_SupprimerToutesLesDonnées

    (note : tous les scripts décrits ci-après sont destinés à être joués en accès intégral).

    Gestion Erreurs [ Oui ]
    Activer modèle [ par numéro ; 1 ]
    Boucle
    Afficher tous les enregistrements
    Si [ Obtenir ( EnregTrouvés ) ]  // ON GERERA LES EXCEPTIONS SI CERTAINES TABLES DE REFERENCE NE DOIVENT PAS ETRE EFFACEES
    Supprimer tous Enregistrements [ sans dialogue ]
    Fin de Si
    Activer Modèle [ numéro par calcul ; Obtenir ( NuméroModèle ) + 1 ]
    Fin de boucle si [ Obtenir ( DernièreErreur )]
    Fin de boucle

    Bien. Que l’on ait généré le fichier de destination par un clone ou pas, nous sommes maintenant tous dans le même bâteau.

    La prochaine étape consiste à s’assurer que tous les enregistrements vont être importés.

    On crée donc un nouveau script dans notre fichier de destination : “MAJ_Afficher tous les enregistrements de la source”

    Ce script ne fait que qu’exécuter un sous-script dans le fichier source : “MAJ_Afficher tous les enregistrements”

    Ce sous-script, qu’on prendra bien soin de copier dans le fichier de destination également (pour la prochaine mise à jour), est très simple :

    Activer modèle [ par numéro ; 1 ]
    Boucle
    Afficher tous les enregistrements
    Annuler Tri
    Activer Modèle [ numéro par calcul ; Obtenir ( NuméroModèle ) + 1 ]
    Fin de boucle si [ Obtenir ( DernièreErreur )]
    Fin de boucle

    Attention, ceci suppose que l’on ait au moins un modèle pour chaque table de base. Mais ceci est largement à conseiller, et pas que pour les mises à jour. Malheureusement, il n’existe pas de fonction de calcul en FileMaker permettant de s’assurer de cela. Pour cela, nous utilisons régulièrement des outils comme Inspector.

    Un participant de la FMConf a proposé, en lieu et place de Annuler tri, de trier sur la clef primaire (il utilise des clefs primaires séquentielles, ou numéros de série). Il est exact que de manière exceptionnelle, on aura pu modifier un identifiant primaire, et qu’il serait ensuite confortable de voir le enregistrements importés dans l’ordre. Néanmoins, nous pensons différemment, car la procédure de mise à jour serait plus longue (le tri est consommateur de temps), et devrait être “hard-codée” (il n’est toujours pas possible, et c’est dommage, de définir un tri dynamiquement). Cela suppose que ces scripts de mise à jour seront beaucoup plus difficiles à maintenir, et qu’il y a plus de chance de provoquer une erreur. Quand ces cas de force majeure se présentent (modification d’un ID par le développeur ou l’admin), nous préférerons profiter de l’occasion pour réaliser l’opération de maintenance consistant à trier, exporter, puis réimporter les enregistrements, directement après le changement d’ID. Ainsi, nous sommes certains que le dernier numéro de série utilisé est bien le dernier enregistrement.

    Nous effectuons bien sûr la même opération (script ci-dessus) pour le fichier situé sous Reference/Solution.fp7, ou pour les autres fichiers de la solution.

    A ce stade, nos fichiers source et notre fichier de destination sont prêts pour l’importation.

    Nous allons donc écrire un script dans le fichier de destination qui importera toutes les données, et mettra à jour les numéros de série. Comme nous devons ajouter une étape d’import pour chaque table, il est facile de cibler tel ou tel fichier source.

    Pour chaque table, nous avons : (les étapes précédées d’un * sont à configurer pour chaque table)

    *Activer modèle ( un modèle représentant la table) // ceci est facultatif, mais permet un éventuel débogage.
    *Importer Enregistrements // on choisit la bonne table source et la bonne table de destination, et on sélectionne les options "noms concordants" et "Créer des enregistrements" en bas. Cette méthode permettra de ne pas avoir à modifier les ordre d'importation plus tard.
    Très important : après avoir cliqué sur Importer, on s'assure que la case permettant l'exécution des options d'auto-entrée est décochée.
    Activer enregistrement [ dernier ]
    (*)Définir variable [ $nextID ; IncrementSerie ( ResultatRubrique ( "zkp" ) ; 1 )]  // tous nos identifiants primaires sont nommés zkp, ce qui nous permet d'utiliser ce genre de formule générique, mais sinon, il suffit de pointer une rubrique en particulier dans chaque cas.
    *Définir valeur en Série Suivante [ zkp ; $nextID ] // malheureusement, il faut ici préciser quelle est la rubrique dont on veut initialiser le numéro de série, il n'existe pas de manière calculée de le faire, à la manière de Définir Rubrique par nom.
    Définir variable [ $nextID ; "" ]

    Nous répétons cette opération pour chaque table (ce qui peut donner un script assez long). Voilà pour l’import des données.

    Listes de valeurs et comptes utilisateurs

    Il ne nous reste plus qu’à importer les éventuelles listes de valeurs modifiables par les utilisateurs (les listes à valeurs personnalisées). Pour cela, FileMaker 11 apporte une petite nouveauté : la possibilité de trier les listes de valeurs dans la fenêtre Gérer les listes de valeurs. On peut désormais les trier par provenance, ce qui nous évite d’avoir à utiliser une convention de nommage très stricte.

    Mais il faut malgré tout copier/coller d’un fichier à l’autre.

    Idem pour les comptes utilisateurs. S’ils ont été modifiés, si on en a créé de nouveaux ou désactivés certains pendant la phase de développement de la nouvelle version, il faut reproduire les modifications sur la nouvelle version. Là encore, on s’aidera d’un outil de comparaison des versions.

    Il en va de même si vous avez du effectuer quelques menues modifications sur la version servie alors que vous aviez déjà commencé le développement de la nouvelle version sur une copie. Pour cela, pas d’autre moyen que de noter ce que l’on fait. Inspector peut malgré tout vous aider, mais appliquer machinalement des modification sans se souvenir de la raison pour laquelle on a du faire ces modifications n’est jamais à conseiller.

    Enfin (quoi que dans notre cas cette étape soit intégrée à notre script d’import), on n’oubliera pas de documenter le numéro de version, afin qu’il soit clair pour les utilisateurs qu’ils ont changé de version, et afin de pouvoir mieux traiter les éventuels rapports de bugs futurs.

    En espérant avoir rencontré votre intérêt, n’hésitez pas à nous faire par de vos expériences et de vos méthodes.[/vc_column_text][/vc_column][/vc_row]

  • Reporting Excel

    Reporting Excel

    Aller plus loin avec Excel et FileMaker

    On croit souvent que l’interaction entre FileMaker et Excel se limite à des conversions ou à des export de données bruts. Et il n’est pas rare qu’on sous estime la puissance de reporting de ces deux outils combinés.

    Dans cette vidéo de 30 minutes, nous apprendrons à générer un rapport Excel qui contiendra des données, de la mise en forme, des images et même des formules qui fonctionnent directement dans Excel !

  • Définir les numéros de série

    Dans cette astuce, nous répondons à une question posée lors de la FM Conf à Paris.

    La question était : “comment gérer la numérotation séquentielle de documents comme des factures ? comment contrôler les numéros de série, tant dans les données que dans la structure de base de données”.

    Dans cette courte vidéo, nous (re)découvrirons une fonction méconnue de FileMaker, IncrementSerie, ainsi que quelques “trucs à savoir” sur l’action de script permettant d’initialiser une numérotation.

    Télécharger

  • Lancement de 1-more-tube

    Lancement de 1-more-tube

    1-more-thing annonce la sortie de 1-more-tube, le premier magazine vidéo sur FileMaker en français.

    Proposé à l’abonnement dès aujourd’hui, 1-more-tube offrira désormais un minimum de 12 numéros par an. Chaque numéro est constitué de 2 vidéos, une longue (environ 30 minutes) qui aborde un sujet de fond ou une technique de développement, et une courte, plus facile d’accès, qui illustre une petite astuce.

    Les fichiers FileMaker associés, sont, sauf exception, également téléchargeables.

    Les visiteurs peuvent aussi échanger des idées ou suggérer des sujets via un mini-forum sous chaque article.

    Le premier numéro permet de comprendre et maîtriser la fonction CustomList d’Agnès Barouh, et de voir comment FileMaker 11 introduit des moyens natifs de s’en passer parfois.

    L’astuce démontrée dans la deuxième vidéo consiste à créer des enregistrements dans une table externe “par le haut”, c’est-à-dire sans passer par la première rangée vierge. Là encore, FileMaker 11 permet une réelle simplification.

    Pour vous abonner, rendez-vous sur le site de 1-more-thing, onglet 1-more-tube, puis cliquez sur le caddie. Vous pourrez alors passer commande de votre abonnement (avec une carte de crédit ou un compte Paypal), et vous recevrez un login et mot de passe.

    A l’occasion du lancement, vous bénéficiez même d’une réduction valable jusqu’au 31/5/2010 ! L’abonnement ne coûte plus que 7,42€ TTC par mois !

  • CustomList et alternatives proposées par FileMaker 11

    CustomList et alternatives proposées par FileMaker 11

    Travailler sur des séries de données, constituer des listes… CustomList est l’outil indispensable. Souvent perçue comme difficile à mettre en œuvre, cette fonction personnalisée d’Agnès Barouh offre pourtant une puissance de traitement qui justifie pleinement son apprentissage.

    Dans cette vidéo, nous tachons de comprendre la logique de fonctionnement de CustomList et d’apprendre à ne plus en avoir peur.

    Nous verrons également comment FileMaker 11 nous propose d’autres méthodes pour boucler à travers des enregistrements, et donc d’accomplir une partie de ce que permet CustomList.

    Le “Coin FileMaker” d’Agnès Barouh.

    Télécharger

  • Certification FileMaker 11

    Certification FileMaker 11

    Toujours prête à investir pour vous garantir une qualité de service optimale, 1‑more‑thing est fière d’annoncer sa certification FileMaker 11.

    Plus d’informations sur la certification FileMaker ici.

  • 10 FileMaker 10 Techniques

    10 FileMaker 10 Techniques

    At first glance, FileMaker 10 is mostly about a new interface and a new toolbar. But FileMaker 10 also introduces outstanding improvements for developers. Download these examples and see how the new features will change the way you develop. Radically.

    These files were presented at the Paris FM Conférence 2009.by Fabrice Nordmann, founder of 1-more-thing.

    They were improved in order to be more easily portable to your solutions.

    Type Ahead shows how a user can dynamically filter data while typing, whether data is displayed in a portal or in a list view.

    Download

    Field Length Control demonstrates the ability to control the authorised input length in a field. The user doesn’t need to exit the field in order to get feed-back.

    Download

    Password Style Field shows how you can now use a simple field for password input, without using a custom dialog.

    Download

    Tab Control illustrates how script triggers allow you to control tab panels elegantly.
    Download

    Field As Button allows you to use a field as a button. Thanks to script triggers, you can shorten the script parameters and avoid the ’video inverse’ effect.

    Download

    Single Value List or how to simplify value lists management with FileMaker 10. In this example you’ll see how with one defined value list, you can display as many as you want, including conditional lists!

    Download

    Field Name Calculations is the first of a serie about ’working with field names’. Here is how your calculations can become proper functions, of which result will vary depending on the field that contains them.

    Download

    Interdependent Fields shows how hard-coding has become unnecessary in your calculations. Here we do a simple unit conversion (inches/centimiters) with 3 different techniques to illustrate the improvements.

    Download

    Save/Restore Finds. Add the ability to store and restore a find to your solutions. Beyond the new native FileMaker 10 feature called Saved Finds, this technique shows how you can create a record for each saved find. Would you like to share a find with another user, or control precisely in which context you want to see a find… this technique is for you. It is comparable to Mac OS X/Mail.app/iTunes Smart Folders: do a find once, redo it as many times as you like.

    Download

    Field Map. Finally, the best one. Work-around issues related to import orders in FileMaker. This technique allows you to map the field import using… the relationship graph!

    Download
  • 10 Techniques pour FileMaker 10

    10 Techniques pour FileMaker 10

    Au delà de la très visible nouvelle barre d’outils, FileMaker 10 introduit de vraies révolutions pour les développeurs. Téléchargez ces fichiers-exemple et voyez comment ces nouveautés peuvent modifier votre manière de développer.

    Ces fichiers de démo constituent des versions améliorées des exemples présentés par Fabrice Nordmann, fondateur de 1‑more‑thing, lors de la FM Conférence 2009. à Paris.

    Ils sont développés dans l’idée d’être facilement portable vers vos applications.

    Type Ahead montre comment, au fur et à mesure que l’utilisateur tape au clavier, il peut filtrer une liste, soit dans une table externe (portal), soit en vue liste.

    Téléchager

    Field Length Control illustre la possibilité de contrôler par l’interface la longueur autorisée dans une rubrique. L’utilisateur n’a plus besoin de sortir de la rubrique pour savoir s’il a correctement saisi.

     

    [fruitful_btn link=”https://www.1-more-thing.com/wp-content/uploads/2015/04/1MT_FieldLengthControl.zip”]Name “button”[/fruitful_btn]

    Télécharger

    Password Style Field (rubrique mot de passe) explique comment vous pouvez désormais proposer la saisie d’un mot de passe directement dans une rubrique, sans passer par une boîte de dialogue.

    Télécharger

    Tab Control montre comment les déclencheurs de scripts vous permettent de manipuler les onglets et d’en contrôler l’accès.
    Télécharger

    Field As Button vous permet d’utiliser une rubrique comme bouton. Grâce aux déclencheurs de scripts, limitez au maximum les paramètres à envoyer au script, et évitez l’effet “vidéo inverse”.

    Télécharger

    Single Value List ou comment simplifier, grâce à FileMaker 10, la gestion des listes de valeurs. Dans cet exemple, vous verrez comment avec une seule liste de valeurs, on peut en proposer autant que l’on veut à l’utilisateur, y compris des listes conditionnelles !

    Télécharger

    Field Name Calculations entame une série de fichiers qui exploitent la possibilité de travailler avec le nom des rubriques. Voyez ici comment vous pouvez faire de vos calculs de véritables fonctions, dont le résultat dépend du nom de la rubrique qui les contient.

    Télécharger

    Interdependent Fields (rubriques interdépendantes) illustre encore une fois le travail avec les noms de rubriques. Plus besoin de coder en dur (hard-coding) le nom des rubriques dans vos calculs.

    Télécharger

    Save/Restore Finds. Intégrez à vos solution la possibilité de mémoriser une recherche. Au delà de la nouvelle fonctionnalité de FileMaker 10 qui permet à chaque compte utilisateur de mémoriser une recherche, cette technique facilement intégrable vous permet de créer un enregistrement pour chaque recherche, et de la nommer. Vous pouvez ainsi envisager de partager des recherches entre plusieurs utilisateurs ou de décider du contexte dans lequel vous voulez l’autoriser à ré-effectuer cette recherche. La technique s’apparente aux Smart Folders (dossiers intelligents) de Mac OS X ou Mail.app.

    Télécharger

    Field Map. Le meilleur pour la fin : contournez les difficultés liées aux imports de fichiers FileMaker. Cette technique vous permet de définir vos ordre d’importation avec… le graphique de liens !

    Télécharger
  • Fabrice Nordmann présentera FileMaker 11 à la FM Conf

    Fabrice Nordmann présentera FileMaker 11 à la FM Conf

    C’est officiel ! c’est Fabrice Nordmann, fondateur de 1‑more‑thing, qui aura l’honneur de présenter FileMaker 11 à la FM Conférence 2010 à Paris.

    La session est intitulée “FileMaker 11 pour les développeurs” et aura lieu samedi 5 juin à 10h45. Vous y découvrirez des tas de petits secrets, et des techniques avancées qui vous permettront de tirer au mieux partie de la dernière version de FileMaker.

    La FM Conférence se tiendra du 3 au 5 juin 2010 à Paris.

    Que se soit pour votre formation, pour découvrir l’univers FileMaker ou pour tisser un réseau de relations professionnelles, n’hésitez pas à vous inscrire.

  • FileMaker : Avoid “Hard-coding”

    One of the nicest things with FileMaker is how free we are to rename things at any time. No matter if a field is used in a calculation or a script, you can rename it and FileMaker will update all dependencies instantly.

    When I try to remember the reasons why I chose FileMaker among the available development tools, I think this one is in the top 5.

    It happens though that you need to hard-code things, that is to say quote an item name such as a field name or a value list.

    For example, to define an auto-enter calculation depending on active field name, you’ll have to write:

    1. Case ( Get ( ActiveFieldName ) = "myFieldName" ; A ; B )

    another well known example is

    2. ValueListItems ( Get ( fileName ) ; "myValueListName" ) 

    This is due to the lack of functions giving information on database structure. One can’t replace expression 1 with

    1b. Case ( Get ( ActiveFieldName ) = theNameOfTheFieldThisCalculationIsDefinedFor ; A ; B )[[EDIT: since this article was first written, FileMaker launched FileMaker Pro 10, which makes this example an old story]The GetFieldName function now allows this]

    or expression 2 with

    ValueListItems ( Get ( fileName ) ; theListOfMyClients )

    With generalization of techniques such as plug-ins to trigger scripts (zippScript, DoScript…) that call a script by its name, or LayoutProperties that call layouts by their name… this problem becomes more crucial. Not to mention the PHP API that forces us to hard code everything. This article won’t solve this case, but the equivalent technique could be developed for the php side.

    But before that. What is really the problem?

    Mainly, referring to a database structure item as a text constant in an expression prevents from renaming this item, unless you investigate the whole DDR (Database Design Report) before renaming anything.

    Let’s take a layout called “Customers_list” and a script that goes to this layout using the Go To Layout [ Name by calculation ] option.

    Imagine that during the development process this layout becomes a table view. You accurately rename it “Customers_table”. Of course the script is not going to work anymore. (note: in this article, we agree to consider that a script that doesn’t work anymore is not something we want 😉

    With time spent on your solution and its increasing complexity, you end up with many items that are not named accurately because you don’t dare renaming them, and you can’t find your way in your naming (not to mention your colleagues or your clients). You might also waste long hours working on a faulty calculation, and finally realize you had just made a typo in the text string. (If you are the one who never ran into this situation, please do not tell me: my only consolation in these cases is to think that probably other guys are as stupid as I am)

    At this point, if I did my job correctly and even if you had never felt that there might be an issue with renaming, you should now feel a great anxiety and I’m sure you are wondering what items in your solution you should never rename.

    No need to thank me. That was for free.

    So here comes the technique we now use to avoid this problem.

    It requires a custom function, available on FMfunctions.com

    FM_Name_ID ( _Name_ID ; _TLFSV ; _fileName ; _layoutName )

    Let’s start with describing this function. We’ll see how and why use it after.

    Parameters are:

    • _Name_ID: can be given an item name or its ID. For example, let’s send our layout “Customers_list” (for now, we know only its name)
    • _TLFSV: the type of item you are working with. It can be:
      • “Table” or “T” : a table occurrence
      • “Layout” or “L” : a layout
      • “Field” or “F” : a field
      • “Script” or “S” : a script
      • “ValueList” or “V” : a value list
    • _fileName: the name of the file in which this item is. If this parameter remains empty (“”), it will mean current file (Get ( FileName ))
    • _layoutName: this parameter should be filled only if type is Field. Again, an empty parameter means current layout. (Note: as in FileMaker Design functions, this parameter can take a table occurrence name rather that a layout name)

    Let’s now see what this function gives for our Customers_list layout:

    FM_Name_ID ( "Customers_list" ; "L" ; "" ; "" )

    Result is 121. Doesn’t it work at yours? do you get 63? This is normal! The ID of the layout is 121 here on my file, but it can perfectly have a different ID on yours. But it is an ID, which means that unlike the layout name, it will never change. The day you rename it “Customers_table”, it will still have the same ID.

    So now in my script, instead of using Go To Layout [ name by calculation ], I just have to use Go To Layout [ ID by calculation ], and that’s all!

    … well, it would be all if such an option would exist…

    Fortunately, the same custom function is going to save us, because it works the other way around too!

    I now know the layout ID: 121, what I’ll do is use the old Go To Layout [ name by calculation ], and I’ll define this calculation as:

    FM_Name_ID ( 121 ; "L" ; "" ; "" )

    And the result is… “Customers_list”, of course!

    And when I’ll rename the layout, the result will be “Customers_table”. So the script will keep working!

    Some will certainly point out that FM_Name_ID ( 121 ; “L” ; “” ; “” ) is not really nice to read.

    And they are not entirely wrong…

    As usual, I would recommend to comment as much as you can:

    FM_Name_ID ( 121 ; "L" ; "" ; "" )  // Customers_list

    and when you rename the layout, only the comment is not accurate, which is not as critical as the expression result.

    Some others would say that all this takes time. Here are some tips to maker it even easier.

    • keep in the Data Viewer the expressions that allow you to get current script and current layout IDs)
    • store the item IDs so you don’t have to look twice for the same information. So where to store them… well, in the item name, now that you can rename it freely! A script that is called by a plug-in can be called MyScriptName_344 (344 being its ID)

    I admit it is not very nice for fields (Name_364 and InvoiceTotal_857 are not nice to work with), so you can use the field comment area.

    After some time using this technique for a while, I’m sure you’ll wonder, like me, why you haven’t used it for years.

    What the web says