From FAQ Filemaker

Tutoriel-Filemaker: 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 :

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

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

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 :

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

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 :

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 :

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 :

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==>
Récupéré sur http://cqfd-fmp.fr/index.php?n=Tutoriel-Filemaker.Creer-un-enregistrement-lie
Page mise à jour le 30 juin 2008 à 12h27