Changements récents - Rechercher:

Tutoriel Filemaker

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

Filemaker avancé

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

Règles de nommage

Versions de FileMaker Pro

Liens utiles Contact Commentaires

edit SideBar

Créer un enregistrement lié

<==Créer un nouvel enregistrement ^ Opérations diverses Rechercher des enregistrements==>

Créer un nouvel enregistrement au sein d'une table ne semble non seulement pas très compliqué, comme expliqué au sein de la page précédente, mais également une opération très naturelle. Il existe dans FileMaker Pro une autre manière extrêmement pratique de créer des enregistrements : créer de nouveaux enregistrements liés.
Il s'agit ici de créer un nouvel enregistrement, non pas dans la table dans laquelle l'OT du modèle trouve sa source, mais bien au sein d'une table d'une OT liée à l'OT du modèle dans lequel on se trouve. Finalement, à la re-lecture, cela semble compliqué... On reprend, sur base d'un exemple simple et concret :

Exemple simple de création d'enregistrements liés dans FileMaker Pro


Nous allons devoir créer quelques bouées et les lier. Mais ce n'est plus un problème pour vous.

Reliée à l'ancre INS__, on va créer une OT bouée ins_PER__Eleves :

  • dans notre graphe de liens, on duplique la table PER__, on renomme cette OT ins_PER__Eleves (certes, nous avons déjà une table ins_PER__, mais elle est utilisée et nous n'hésitons pas à créer des OT en fonction des besoins spécifiques)et on la place en face de l'ancre INS__ en faisant un peu de place.

On ouvre l'ancre INS__ et cette nouvelle bouée pour créer deux liens :

  • Zkf_PER de l'ancre vers Zkp de la bouée
  • Une nouvelle rubrique Zkk_Eleve pour filtrer sur le type (en l'occurrence sur les élèves).

Bon. Rien de très surprenant si on a ± tout suivi jusqu'ici :

  • INS est une table intermédiaire, donc c'est logique qu'elle ait comme rubrique zkf_PER, à lier avec le zkp de la table PER
  • On a besoin d'un filtre sur les élèves (le Type), donc le lien sera complété par zkk_Eleve <----> Type
    • comme son nom l'indique, Zkk_Eleve sera une rubrique constante contenant la valeur "élève"
    • fermons temporairement notre graphe des liens par "OK"
    • On se place sur le modèle INS_Tech et on ouvre la définition des rubriques (pomme ou ctrl maj D vous fera gagner du temps).
    • Dans l'onglet "Rubriques" on vérifie que nous sommes bien dans la table INS_Inscriptions et on crée la nouvelle rubrique texte Zkk_Eleves.
    • Dans options, on indique "élève" dans "Données", on coche entrées auto. non modifiables lors de la saisie et on valide.
    • Si on ferme la fenêtre de gestion de la base par "OK", on voit que notre nouvelle rubrique est apparue sur notre modèle Tech. Elle ne contient rien car nous n'avons pas encore d'enregistrements dans cette table, mais nous n'allons pas tarder à en créer.
  • Revenons à notre graphe des liens pour créer le deuxième lien, entre Zkk_Eleves et Type.

Rien de très sorcier jusqu'ici. La seule astuce d'enfer, c'est que nous allons cocher ici Permettre la création d'enregistrements via ce lien. Le but étant de pouvoir créer directement, grâce au lien, des enregistrements dans la table des PERsonnes via les INScriptions (on ne coche donc la cas magique que d'un côté).

Ceci étant fait, plaçons-nous sur le modèle INS_Fiche, sur lequel on va mettren, malins que nous sommes, les rubriques liées de la table PER (donc en fait de l'OT ins_PER__Eleves). Celles qui nous intéressent ici sont Nom, Prenom, Adresse1, Adresse2, CP, Commune, Email, Tel, Portable et Type, pour pouvoir remplir toutes les coordonnées d'un élève (rappelons-nous que le lien est filtré sur "élève".

Pour ce faire, en mode Modèle, on glisse une nouvelle rubrique sur notre modèle (le repère qui n'a normalement pas changé de place nous aide à l'aligner à gauche). Dans la fenêtre qui s'ouvre pour choisir la rubrique, on sélectionne dans le menu déroulant l'OT liée qui nous intéresse : ins_PER__Eleves, puis la rubrique choisie en cochant Adjoindre le titre.

Comme recommencer cette opération est un peu fastidieux, nous allons voir une autre manière de créer des rubriques...
Commençons par mettre en forme la rubrique que l'on vient de placer (comme Zkc_Annee déjà présent sur le modèle). Cette nouvelle rubrique étant sélectionnée, on fait un copier coller, ce qui nous donne une nouvelle rubrique "::Nom", que l'on place au bon endroit.

Puis on double clique dans cette rubrique. La fenêtre de configuration de la rubrique s'ouvre. À droite de cette fenêtre, nous avons aussi la liste des rubrique, et cette liste est sur la bonne OT (normal, puisque c'est celle de laquelle nous avons pris la rubrique Nom). Il suffit de choisir "Prenom" et de cocher dans "Adjoindre le titre", puis de fait OK. Et voilou...

Yapluka (le faire pour les autres). Pratique non ? Et si vous avez oublié de cocher le nom de la rubrique, pas de souci, on double clique dans la rubrique, on coche la case et on valide. Hop, le voilà.

Notre modèle est prêt,

Passons en mode utilisation.

Nous faisons un CTRL+N ou Pomme+N pour créer un nouvel enregistrement. Celui-ci étant créé, nous constatons qu'il est vide, à l'exception de l'année qui s'est renseignée automatiquement à partir de la date du jour. Nous allons maintenant rendre hommage à l'ami navigateur Rémy, initiateur du premier site FileMaker pour débutants, et nous encodons, AU SEIN DU MODELE INS_Fiche, DE L'OT INS__, de la table INS_Inscriptions, dans les rubriques de la table PER sur l'OT ins_PER__Eleves le nom (dans la rubrique Nom) et le prénom (dans la rubrique Prenom) de Rémy (son prénom) Delapierre (son nom).

Cela ne semble pas très compliqué. Et pourtant... Rappelons que nous sommes dans le contexte de l'OT INS__, de la table INS_Inscriptions. Rien à voir avec la table PER_Personnes, ni avec l'OT ancre PER__ ! Et pourtant nous venons de créer un nouvel enregistrement au sein de la table PER ! :

Pour vous en convaincre, il suffit d'essayer, puis de passer sur le modèle PER_Fiche et d'afficher le dernier enregistrement. Rémy Delapierre existe. Mais ce n'est pas tout, c'est aussi un élève, sans qu'on lui demande quoi que ce soit !

  1. Souvenons-nous que le lien entre INS et PER est composé non seulement de la relation de zkf_PER vers zkp (la classique), mais également de zkk_Eleve (constante de texte "Eleve") vers la rubrique "Type" de la table PER. Et que pouvons-nous observer ? La rubrique "Type" de l'enregistrempent de la table PER a été automatiquement complétée par la valeur "Eleve" ! Pourquoi ? Simplement parce que cette rubrique "Type" faisait partie du lien de création !
  2. Fait également partie du lien, mais du côté de l'ancre INS__, la rubrique zkf_PER. Elle est donc, elle aussi, automatiquement complétée avec la valeur du zkp de l'enregistrement nouvellement créé dans la table PER !

En résumé, tous les éléments faisant partie du lien sont mis à jour, autant à gauche qu'à droite du lien, lorsqu'une nouvelle donnée est introduite dans la table liée (que cette donnée fasse partie du lien ou non). Il pourrait donc paraître tentant de faire des multi-liens maousses qui compléteraient autant de rubriques liées d'un coup, en n'encodant qu'une seule donnée dans la table liée. Mouais... Si cette opération de création est simple et facile, elle n'en est pas moins lourde et gourmante en énergie dépensée... Donc, à utiliser avec parcimonie, et éviter l'utilisation d'un méga-lien au sein d'une boucle de script (voir plus loin), par exemple.

Passons maintenant à une application très pratique : l'inscription des élèves dans les classes (==> page 2)

____

Application pratique de création d'enregistrements liés dans FileMaker Pro


On va ici illustrer une application complète, bien concrète, de création via des liens : les inscriptions. Nous avons vu comment créer un élève à partir de la table des inscriptions. Bon, mais ce qui est plus intéressant, c'est de créer une inscription à partir de la fiche d'un élève. Un élève se présente ou téléphone : à partir de sa fiche, on l'inscrit d'un clic dans la classe ad hoc ! Nous allons donc, à partir de la table PER_Personnes, inscrire des élèves dans des classes. Bien pratique !

Au boulot ! Reprenons notre fichier N° 21

Dans la fenêtre de gestion des liens, nous allons créer deux bouées reliées à l'ancre PER__ (on va partir d'un modèle de PER_personnes, donc de l'ancre PER). Une des bouées pour afficher les données des INScriptions, l'autre des CLAsses. Comme INS est la table intermédiaire, il y a de grandes chances pour qu'elle se trouve au milieu.

Donc on duplique INS__ pour créer la bouée per_INS__ et on duplique CLA__ pour créer per_ins_CLA__
On fait un peu de rangement et on place ces deux bouées devant l'ancre PER__. Nous allons bâtir deux liens depuis l'ancre PER__ vers la bouée per_INS__,
puis un lien de la bouée per_INS__ vers la bouée per_ins_CLA__ :

Dans le premier de ces liens (PER__ <----> per_INS__), on autorise la création :

Le but étant justement de créer des inscriptions, on autorise la création dans la table INS... Par contre, il n'est nullement question ici de créer des personnes. On n'autorise donc pas sur la partie gauche des liens. Comme il n'est pas non plus question de créer des classes, le second lien n'autorise pas la création.

Que faut-il pour inscrire un élève ? Simplement que :

  • Les rubriques zkf_PER et zkf_CLA de la table INS soient complétées valablement (donc par la table intermédiaire nous aurons bien associé une personne (par son zkp relié à zkf_PER) et une classe (par zkf_CLA relié au zkp d'une classe)
  • Le type "Eleve" soit renseigné dans INS, dans la rubrique zk_Type

Or, si on observe notre premier lien, et qu'on a bien capté le premier exemple, on voit que :

  • Il ne faudra pas trop se préoccuper du type : il fait partie du lien
  • Il ne faudra pas non plus trop s'en faire avec le zkf_PER : il est lié au zkp de l'élève potentiel

Donc, suivant notre 1er exemple (encore merci Rémy), il suffira de compléter une rubrique de INS dans l'OT per_INS__ pour que ces deux données soient complétées sans qu'on doive s'en occuper.

Reste la troisième donnée à compléter pour que l'inscription soit complète : zkf_CLA. Là, ça paraît franchement plus compliqué... A la limite, on verrait bien cette rubrique comme étant la rubrique à compléter pour créer l'enregistrement lié, ce serait bien, finalement : on ferait d'une pierre deux coups : on crée l'enregistrement lié et on complète zkf_CLA. Le tout est de connaître la valeur de zkf_CLA à mettre, et ça, ce n'est pas marqué au fond de notre boule de cristal... Comment s'en sortir pour remplir cette rubrique avec une valeur valable (c'est à dire un zkp) correspondant à un nom de classe ? Comme on ne peut demander à l'utilisateur de connaitre par coeur les noms des classes et leurs identifiants, nous allons user d'une astuce typique de FileMaker Pro !

Nous allons d'abord, en mode Modèle, placer une TE sur le modèle PER_Fiche, montrant les enregistrements liés de l'OT per_INS__.

Comme nous avons un peu bousculé la progression, certains d'entre vous ne savent pas encore créer une TE et se demandent même ce que signifient ces deux lettres (ceux qui savent peuvent aller tout de suite à la page 3...)

Donc, une TE, c'est une Table Externe. Un outil futé qui permet d'afficher plusieurs enregistrements liés d'une bouée (on résume, car tout ceci est développé dans la partie modèles dans laquelle nous allons de toutes façons revenir).

Sur le modèle PER_Fiche, on passe en mode modèle et on utilise l'outil de traçage de la Table Externe

Notre curseur se transforme en + (croix horizontale verticale). Sur le modèle, par exemple sous la rubrique "Pays", on trace à l'aide de cette croix un rectangle. Lorsqu'on relâche la souris, la fenêtre "Table Externe" s'affiche. On y précise que l'on veut afficher les enregistrements liés de : per_INS__ (vous noterez que seules les OT liées sont proposées), que la rangée initiale commence à 1 et que l'on veut, disons, 8 rangées (nous verrons les autres détails dans les modèles).

On valide (OK) et la fenêtre des rubriques à ajouter apparaît... On y choisit notre fameux Zkf_CLA

On ajoute la rubrique pour qu'elle apparaisse dans la colonne de droite, on clique sur OK, et nous pouvons rejoindre le reste de la troupe en page 3

____ Notre fichue rubrique per_INS__::zkf_CLA est sur la table. Comme elle occupe toute la place, on va la réduire pour qu'elle ne prenne que la moitié de la longueur et on lui donne un fond blanc. Attention, lors des manœuvres sur la taille de la rubrique, de bien faire en sorte qu'elle reste dans les limites du rectangle supérieur (non grisé) de la TE.

Ce sera notre terrain de jeux pour créer nos inscriptions. Mais ici nous n'allons afficher que les valeurs des Zkp (les Zkf_CLA) des classes, ce qui n'est pas très explicite... Nous allons donc afficher les noms des classes que nous allons trouver directement dans la bouée liée per_ins_CLA__. Et pour que seul le nom apparaisse, nous allons (fallait l'inventer, celle-là), placer AU-DESSUS de la rubrique per_ins_CLA__::zkf_CLA la rubrique per_ins_CLA__::Nom, reprenant le nom de la classe qui sera choisie.
On glisse donc une rubrique au bon endroit et on choisit la rubrique dans la fenêtre, en s'assurant d'être sur la bonne OT :

Il faut ensuite lui donner une couleur de fond (ou une empreinte) et la superposer exactement. Les deux rubriques doivent donc avoir très exactement la même taille.

Très important :

  • La rubrique (per_INS__) ::zkf_CLA est (réglages dans Rubriques => comportement modifiable en Saisie (faut bien compléter la valeur un jour...), mais non modifiable en Recherche (on ne recherche JAMAIS des zkp ou zkf !) - si vous avez d'abord modifier les tailles et emplacement pour la superposition, il faudra jouer sur les premier ou deuxième plans.
  • La rubrique per_ins_CLA__::Nom est non-modifiable en Saisie (il n'est pas question ici d'aller modifier le nom d'une classe !), mais est modifiable en Recherche (on peut chercher le nom d'une classe)
  • Les tailles des deux rubriques sont identiques au pixel près, ainsi que les positions (merci à la fenêtre d'infos sur l'objet - réglez d'abord la taille si votre mémoire vous joue des tours, vous pourrez recliquer dans la rubrique inférieure pour revoir la position)

On peut ensuite compléter la TE avec d'autres rubriques liées, comme par exemple per_INS__::zlg_Creation, qui montrera la date à laquelle la création a été faite. On règle le tout pour que ce soit beau :

Mettons-nous maintenant en mode Utilisation :

Nous sommes normalement sur la fiche de notre élève Rémy Delapierre. Notre TE affiche une ligne avec un enregistrement vierge. Nous allons inscrire notre élève dans une classe.

Le problème est qu'il faudrait saisir le zkp d'une classe pour placer sa valeur dans la rubrique "saisissable" per_INS__::zkf_CLA, mais dont on ne connait pas la valeur. Mais on connait le nom des classes et la sélection pourra s'opérer sur ce nom et non sur le zkp... Par contre, on ne se rappelle pas forcément du nom exact de toutes les classes et surtout, il ne faut pas se tromper à la saisie.
La solution se trouve dans la construction d'une liste de valeurs "Classe", reprenant l'ensemble des noms des classes. Cette liste de valeurs nous affichera le nom des classes et nous n'aurons qu'à choisir. On va donc bâtir cette liste sur toutes les valeurs des classes de l'OT ancre CLA__, de la manière suivante. Dans Fichier on ouvre "Gérer (ou définir) => Listes de valeurs..." et on clique sur Créer puisque nous allons créer une nouvelle liste valeurs. C'est d'ailleurs le titre attribué par défaut par FileMaker. Nous allons l'appeler "Classes_r" (classes car c'est la liste des classes et _r pour se rappeler qu'elle est posée sur une rubrique) :

On clique ensuite sur "Utiliser les valeurs de :". La fenêtre permettant le choix des rubriques s'ouvre. Nous y indiquons :

  • à gauche (les valeurs que nous allons utiliser) que nous voulons, dans la table CLA__ la rubrique Zkp (c'est ce qui permettra le lien, la valeur qui va s'enregistrer dans Zkf_CLA)
  • Dans la colonne de droite, on clique sur "afficher aussi les valeurs de la 2eme rubrique" et dans la table CLA__ on sélectionne le Nom de la classe, qui est parlant pour nous.
    • comme son nom l'indique ("Afficher aussi...) cette valeur ne sert qu'à l'affichage
  • Quoique c'est cette donnée qui sera saisie, on MASQUE la première donnée, zkp, qui ne nous interpelle pas du tout, en cochant la case "Afficher uniq. les valeurs de la 2e rub."
  • Bien sûr, on demande d' "Inclure toutes les valeurs", sans aucun filtre.
    Et on valide trois fois.

Ainsi, la liste ne montrera que les NOMS des classes, malgré le fait que ce soit bien les zkp qui sont saisissables !
On installe cette liste sur la seule rubrique saisissable de la TE, (per_INS__) ::zkf_CLA (et non la rubrique per_ins_CLA::Nom !). Il va donc falloir décaler un peu les rubriques de la TE pour "accrocher" la liste. En fait il suffit de cliquer sur ::Nom, et de l'éloigner d'un cran. ::Zkf_CLA devrait alors apparaître. On double clique dessus et dans la fenêtre de configuration, à la place de zone d'édition on choisit "Liste déroulante". Il faut ensuite dans le menu déroulant du dessous remplacer <inconnu> par le nom de notre liste (facile, pour le moment il n'y en a qu'une) Classes_r.

On peut ensuite "éloigner" cette rubrique d'un cran, pour que ::Nom revienne au premier plan. Lorsque, en mode utilisation, on va cliquer dans la rubrique classe, c'est bien la liste des classes qui va apparaître. Dans cette liste nous pouvons choisir la classe de façon explicite, sans nous tromper.

Ainsi, ce sont bien les noms des classes qui apparaîssent, mais, quoique totalement invisible, c'est bien une valeur de zkp qui sera saisie dans la rubrique zkf_CLA. C'est pas beau, ça ?

Pour inscrire un élève dans une classe, il suffit maintenant de saisir une classe dans la liste, et l'inscription est faite : un nouvel enregistrement aura été créé dans la table INS_Inscriptions. Difficile de faire plus simple !

Inscrivons Rémy dans la classe des grands.

Si, par curiosité, on se rend sur le modèle INS_Tech, et qu'on recherche le dernier enregistrement créé, on constate bien que l'inscription a été faite correctement :

En effet :

  • le zkf_PER est bien présent (celui de Rémy, le 88)
  • le zkf_CLA est bien présent (celui de la classe des grands)
  • le type "Eleve" est bien renseigné
  • l'année d'inscription a bien été calculée

Notons un dernier point très important. Pour faire les inscriptions, nous aurions pu penser qu'il fallait se placer dans la table INS_Inscriptions et y enregistrer des PERsonnes. On se rend compte ici de l'importance du contexte et du point de vue, puisque c'est en fait en partant de la personne que je vais pouvoir choisir où l'inscrire.

Voilà, vous pouvez continuer dans les opérations diverses, ou bien, pour ceux qui nous ont accompagné pour une pause, revenir dans les modèles. Nous allons directement voir en détail la création d'une Table externe.

Vous pouvez aussi comparer avec notre fichier 22

<==Créer un nouvel enregistrement ^ Opérations diverses Rechercher des enregistrements==>
Éditer - Historique - Imprimer - Changements récents - Rechercher
Page mise à jour le 30 juin 2008 à 10h27