Aller au contenu


- - - - -

Récupération Des Enregistrements Liés En Bout De Chaine

liens enregistrements liés

  • Please log in to reply
20 réponses à ce sujet

#1 pc_wave

pc_wave
  • Membres
  • 12 messages
  • Genre :Homme
  • Lieu :qsdf


Posté 02 février 2012 - 19:08

Bonjour à tous


je fais appel à vos connaissances pour éclaircir des points que je n'arrive pas à surmonter sur le montage de ma BDD.

Après cette phrase d'accroche Ô combien originale, entrons dans le vif...

J'ai 3 principales tables :
- Tours
- Recettes
- Ingrédients

J'ai de plus 2 tables de liaisons TouRec et RecIng , pour pouvoir mettre différents ingrédients dans une recette, et différentes recettes dans un tour, sachant qu'une même recette peut se retrouver dans différents tours, et un seul ingrédient dans plusieurs recettes...

Je voudrais, pour un Tour, sélectionner plusieurs Recettes, afin de lister tous les Ingrédients nécessaires au Tour.


Ce que j'arrive à faire (recours aux TE) :
- sélectionner les ingrédients appartenant à une recette, afin de créer la recette en question.
- sélectionner les recettes appartenant à un tour, afin de créer le tour.

Je pensais avoir réussi l'essentiel. MAIS je n'arrive pas à faire afficher tous les Ingrédients (contenus dans les Recettes) nécessaires à un Tour... alors ça paraît peut être évident mais là j'avoue saturer et je n'arrive plus à me démêler les idées. En fait je n'arrive pas à faire afficher les enregistrements liés de la bouée la plus éloignée...

Je me demande du coup si je m'y suis mal pris dans la structure, et que j'ai rien compris à comment hiérarchiser les tables et faire des liaisons qui tiennent la route (probablement un peu voire beaucoup). Pour le moment j'ai une seule ancre (Tour), que je lie "séquentiellement" aux bouées -> TouRec <- Recettes -> RecIng <- Ingrédients, via les zkp/zkf, c'est donc extrêmement simple d'autant plus que je ne cherche pas à faire d'analyse de données funky par dessus.

En fait, j'ai l'impression que la structure que j'ai faite suffit mais que je manque cruellement de connaissances sur les fonctions/scripts/calculs possibles. J'ai essayé de lire les descriptifs sur des fonctions comme ActiverEnregistremenLié, mais je n'arrive pas à le mettre en oeuvre... et les tutos que je vois pour faire des scripts avec ça valent encore une autre paire de manches.

ALors, avant de me lancer là dedans aveuglément, sachant le peu de temps qui me reste avec la version d'évaluation, je voulais déjà savoir si la structure de base est correcte et qu'effectivement je n'ai pas d'autre choix..!!

Est-ce que quelqu'un pourrait m'aiguiller ? :S Je suis perdu!!


Merci d'avance...

Paul

#2 Gilles du Pont-neuf

Gilles du Pont-neuf
  • Membres
  • PipPipPipPipPipPipPip
  • 1 976 messages
  • Genre :Non précisé
  • Lieu :Pont-neuf
  • Intérêts :Bridge, cuisine, musique
  • FM : ProAdvanced 12.0v1
  • OS : Windows 7 pro 64 bits


Posté 02 février 2012 - 20:05

Perso, j'habite à ghjk. Je sais, ça aide pas, mais j'ai pas pu m'empêcher.
Gilles Berkovitch
Une mauvaise écriture est une des formes du mépris qu'on a pour autrui ; car elle prouve qu'on attache plus de prix à son propre temps qu'à celui des autres.
Hugo De Groot, dit Grotius (1583-1645)

#3 Puimoisson04

Puimoisson04
  • Membres
  • PipPipPipPipPipPipPip
  • 1 640 messages
  • Genre :Homme
  • Lieu :Alpes-de-Haute-Provence
  • FM : FMP11A
  • OS : OSX6


Posté 02 février 2012 - 21:38

Dans la table Tour, une TE basée sur ta bouée la plus éloignée (tour<->interTourRecette<->Recette<->InterRecetteIngredient<->Ingredients) avec, oeuf corse, la rubrique Ingrédient de cette bouée, doit faire l'affaire.
Christophe

"Ce qui compte dans la sauvegarde des condors et de leurs congénères, ce n'est pas tant que nous avons besoin des condors, mais que nous avons besoin des qualités humaines nécessaires pour les sauver. Ce sont précisément celles-là même qui nous seront nécessaires pour nous sauver nous-mêmes." Ian Mac Millan

#4 pc_wave

pc_wave
  • Membres
  • 12 messages
  • Genre :Homme
  • Lieu :qsdf


Posté 03 février 2012 - 12:31

J'ai essayé mais ça ne m'affiche rien. Je dois avoir un pb de lien que je vais essayer de creuser... j'ai l'impression que ma méthode de sélection des recettes n'est pas la bonne. Pour ça j'ai une TE basée sur la table de jonction tour/recette, avec des menus locaux basés sur des listes de valeur recette. Je vais essayer de revoir ça...


ps Gilles : o_Ô'

#5 Puimoisson04

Puimoisson04
  • Membres
  • PipPipPipPipPipPipPip
  • 1 640 messages
  • Genre :Homme
  • Lieu :Alpes-de-Haute-Provence
  • FM : FMP11A
  • OS : OSX6


Posté 03 février 2012 - 14:44

Voici, si j'ai bien compris

Fichier(s) joint(s)

  • Fichier joint  Tours.fp7   92K   11 Nombre de téléchargements 

Christophe

"Ce qui compte dans la sauvegarde des condors et de leurs congénères, ce n'est pas tant que nous avons besoin des condors, mais que nous avons besoin des qualités humaines nécessaires pour les sauver. Ce sont précisément celles-là même qui nous seront nécessaires pour nous sauver nous-mêmes." Ian Mac Millan

#6 pc_wave

pc_wave
  • Membres
  • 12 messages
  • Genre :Homme
  • Lieu :qsdf


Posté 03 février 2012 - 16:42

Bon j'ai compris mon bug, je ne liais pas les rubriques avec les listes de valeurs aux zkf, donc forcément je pouvais sélectionner dans ma TE mais le lien ne se faisait pas. Du coup j'ai pu afficher les ingrédients.

Merci pour ton fichier Puimoisson, qui est bcp moins fouillis que le mien. Ma structure de base était donc bonne. C'est déjà rassurant :P

Néanmoins mon problème se situe sur le fait qu'1 tour comporte plusieurs jours et chaque jour plusieurs repas (midi, soir...). J'ai donc crée des rubriques dans ITR, disons jour - midi - soir. Je dois pouvoir choisir, pour ces repas, dans la liste de recettes. C'est là que je ne sais pas s'il faut créer un GOT par repas, car je dois pouvoir les différencier... mais ça ne peut pas être ça car j'aboutirais alors à des liens circulaires en reliant le tout aux ingrédients.
En fait, tant que j'ajoute des recettes dans une TE, je lie au kf_recette, aucun problème, les ingrédients s'affichent.
Mais j'essaie de faire une TE où apparaissent les différents repas de chaque jour, et où je peux choisir les recettes. Je ne sais alors pas lier correctement les clés pour qu'il n'y ait pas de conflit : je choisis dans la liste de recettes tous mes différents repas sur 1 tour, et je dois récupérer le total de tous les ingrédients.

C'est le fait d'avoir différentes rubriques (midi1, soir1, midi2, soir2...) pointant vers la même liste qui me gêne : comment gérer les clés?



ps Gilles. je viens de comprendre :D

#7 Puimoisson04

Puimoisson04
  • Membres
  • PipPipPipPipPipPipPip
  • 1 640 messages
  • Genre :Homme
  • Lieu :Alpes-de-Haute-Provence
  • FM : FMP11A
  • OS : OSX6


Posté 03 février 2012 - 20:11

Je ne suis pas sûr que tu ai besoin d'occurrences de table supplémentaires.

Fichier(s) joint(s)

  • Fichier joint  Tours_2.fp7   108K   6 Nombre de téléchargements 

Christophe

"Ce qui compte dans la sauvegarde des condors et de leurs congénères, ce n'est pas tant que nous avons besoin des condors, mais que nous avons besoin des qualités humaines nécessaires pour les sauver. Ce sont précisément celles-là même qui nous seront nécessaires pour nous sauver nous-mêmes." Ian Mac Millan

#8 pc_wave

pc_wave
  • Membres
  • 12 messages
  • Genre :Homme
  • Lieu :qsdf


Posté 04 février 2012 - 01:11

Je suis confus, ça a l'air si évident :S

Je vais potasser ça demain, merci énormément de ton aide Puismoisson..!

#9 pc_wave

pc_wave
  • Membres
  • 12 messages
  • Genre :Homme
  • Lieu :qsdf


Posté 04 février 2012 - 08:07

Bon avec les idées + fraiches, ct en fait ce que j'avais fait, en super mieux présenté ;), et des boutons super pratiques qui allaient me poser problème plus tard...

La méthode pour distinguer les repas en en faisant une seule rubrique avec plusieurs valeurs m'avait obligé à faire une TE dans le même principe que la tienne, soit on ajoute une ligne par repas. Je cherchais alors à obtenir un tableau récapitulatif différent, comme le 1er dans la photo ci dessous (mon fichier fait + de 500k alors je mets un sc) :

Fichier joint  tableaux.jpg   54,64K   0 Nombre de téléchargements 

Je pensais que j'étais obligé de faire une rubrique par repas pour pouvoir avoir un tableau comme le 1er. Est il possible d'avoir un truc similaire avec la méthode d'une seule rubrique à valeurs? J'imagine que forcément oui, mais je n'ai pas encore réussi à trouver :/
Je vais essayer de voir avec les récapitulatifs...

#10 Puimoisson04

Puimoisson04
  • Membres
  • PipPipPipPipPipPipPip
  • 1 640 messages
  • Genre :Homme
  • Lieu :Alpes-de-Haute-Provence
  • FM : FMP11A
  • OS : OSX6


Posté 04 février 2012 - 10:34

Voir le messagepc_wave, le 04 février 2012 - 08:07, dit :

Je pensais que j'étais obligé de faire une rubrique par repas pour pouvoir avoir un tableau comme le 1er.
C'est le plus simple.
Christophe

"Ce qui compte dans la sauvegarde des condors et de leurs congénères, ce n'est pas tant que nous avons besoin des condors, mais que nous avons besoin des qualités humaines nécessaires pour les sauver. Ce sont précisément celles-là même qui nous seront nécessaires pour nous sauver nous-mêmes." Ian Mac Millan

#11 pc_wave

pc_wave
  • Membres
  • 12 messages
  • Genre :Homme
  • Lieu :qsdf


Posté 04 février 2012 - 11:09

Mais alors c'est justement dans ce cas-là que je ne vois pas comment faire correctement les liens. Si j'ai qu'un seul zkf_recette dans la table inter_RecTour, je ne peux pas sélectionner différentes recettes pour chaque repas dans une même ligne jour. Si je crée un zkf par repas je perds l'affichage des ingrédients, ce que je ne comprends d'ailleurs pas. :/ Le fait de tous les lier au meme zkp_recette pose problème j'imagine, et c'est pour ça que je pensais à des occurences supplémentaires...

:dur:

#12 Puimoisson04

Puimoisson04
  • Membres
  • PipPipPipPipPipPipPip
  • 1 640 messages
  • Genre :Homme
  • Lieu :Alpes-de-Haute-Provence
  • FM : FMP11A
  • OS : OSX6


Posté 04 février 2012 - 15:58

Voici une solution. Mais je suis un borderline et je ne sais pas si c'est la meilleure.
Il y a deux tables de plus :
- Une pour les repas (uniquement pour pouvoir travailler avec des identifiants et non le libellé "texte" des repas).
- Une pour les jours avec une globale IdTour qui est renseignée par un déclencheur de script au chargement d'un enregistrement de Tour.

Fichier(s) joint(s)

  • Fichier joint  Tours_3.fp7   132K   2 Nombre de téléchargements 

Christophe

"Ce qui compte dans la sauvegarde des condors et de leurs congénères, ce n'est pas tant que nous avons besoin des condors, mais que nous avons besoin des qualités humaines nécessaires pour les sauver. Ce sont précisément celles-là même qui nous seront nécessaires pour nous sauver nous-mêmes." Ian Mac Millan

#13 pc_wave

pc_wave
  • Membres
  • 12 messages
  • Genre :Homme
  • Lieu :qsdf


Posté 04 février 2012 - 18:45

Wahou. Je vais potasser ça, les structures commencent à se compliquer... j'aurai probablement des questions qui viendront :P

Merci, une fois de plus!

#14 pc_wave

pc_wave
  • Membres
  • 12 messages
  • Genre :Homme
  • Lieu :qsdf


Posté 05 février 2012 - 11:09

Bon les tables fonctionnent bien que je le voulais mais je mets un certain temps pour comprendre le montage, et j'ai des questions en suspens :

- l'occurence tou_ITR__Jours est-elle indispensable ou était-ce par souci de clarté? En gros est-ce que ça change qqch que de lier le zkp_jour au Jour_N de la table tou_ITR__Tout ? Je ne vois pas de modif immédiate dans les résultats quand je fais ça, mais on sait jamais...

- le jeu de liens au delà de la table tou_itr_JOU me pose plusieurs problèmes
-- pourquoi avoir des variables globales pour chaque repas?
-- ce jeu de liens permet d'affecter une recette à chaque repas d'un jour. Je me demandais alors si on liait chaque repas jusqu'aux ingrédients (avec des occurences IRI et ING pour chaque repas), est-ce que le 1er jeu de liens menant à tou_itr_rec_iri_ING était nécessaire? En gros en l'état actuel je me demande comment Filemaker fait pour réussir à récupérer la liste des ingrédients, avec des liens qui apparemment n'y mènent pas vraiment...

#15 Puimoisson04

Puimoisson04
  • Membres
  • PipPipPipPipPipPipPip
  • 1 640 messages
  • Genre :Homme
  • Lieu :Alpes-de-Haute-Provence
  • FM : FMP11A
  • OS : OSX6


Posté 05 février 2012 - 12:01

Voir le messagepc_wave, le 05 février 2012 - 11:09, dit :

- l'occurence tou_ITR__Jours est-elle indispensable ou était-ce par souci de clarté? En gros est-ce que ça change qqch que de lier le zkp_jour au Jour_N de la table tou_ITR__Tout ? Je ne vois pas de modif immédiate dans les résultats quand je fais ça, mais on sait jamais...
C'est effectivement parce que je ramais un peu (beaucoup !) que j'ai procédé pas par pas en décomposant tout. Mais on doit pouvoir simplifier le graphe. Ici, effectivement tu peux supprimer l'occurrence de table tou_ITR__Jour et raccrocher tou_itr_JOU__ à tou_ITR__Tout (en changeant bien sûr "l'adresse" des rubriques dans les différentes tables externes concernées).

Voir le messagepc_wave, le 05 février 2012 - 11:09, dit :

- le jeu de liens au delà de la table tou_itr_JOU me pose plusieurs problèmes
-- pourquoi avoir des variables globales pour chaque repas?
tou_itr_JOU__ permet d'afficher dans une table externe de Tour autant de lignes qu'il y a de jours pour ce tour.
On veut maintenant pour chacun des jours/lignes de cette TE avoir les repas de ce jour/ligne. Il faut donc dans la table tou_itr_JOU__ "voir" les différents repas de ce jour.
Mais, un repas correspond à un enregistrement de ITR. Or je veux afficher côte à côte dans la même ligne de la TE de tour les 4 repas. Il me faut donc aller chercher "séparément" ces 4 repas en les distinguant les uns des autres via la globale.

Voir le messagepc_wave, le 05 février 2012 - 11:09, dit :

-- ce jeu de liens permet d'affecter une recette à chaque repas d'un jour. Je me demandais alors si on liait chaque repas jusqu'aux ingrédients (avec des occurences IRI et ING pour chaque repas), est-ce que le 1er jeu de liens menant à tou_itr_rec_iri_ING était nécessaire? En gros en l'état actuel je me demande comment Filemaker fait pour réussir à récupérer la liste des ingrédients, avec des liens qui apparemment n'y mènent pas vraiment...
La chaîne de liens "du haut" "raisonne "globalement" sur le seul Tour. Cette chaîne "ramasse" tous les ingrédients du bout de la chaîne en les "dédoublonnant" (si un ingrédient est utilisé dans plusieurs recettes et/ou des jours différents, il n'apparaîtra qu'une fois).
Si on prolonge la chaîne de liens "du bas" jusqu'aux ingrédients, on peut récupèrer dans chaque ligne de la table externe "Récapitulatif" de Tour les 4 listes correspondant aux 4 repas.
Sur le principe de qui peut le plus peut le moins, tu peux réassembler ces "paquets" de données (une liste d'ingrédients par repas d'un des jours du tour) pour avoir les ingrédients d'un jour, d'un repas sur plusieurs jours, soit via des liens, soit via des calculs.

En fait (c'est souvent le cas), il faut clairement définir ce dont on a besoin pour trouver le moyen le plus logique/simple/efficace d'y arriver.
En espérant avoir été à peu près clair. Comme j'avais commencé à le dire, je suis là aux limites de mes quelques compétences et j'ai un peu de mal à m'y retrouver moi-même !!
Christophe

"Ce qui compte dans la sauvegarde des condors et de leurs congénères, ce n'est pas tant que nous avons besoin des condors, mais que nous avons besoin des qualités humaines nécessaires pour les sauver. Ce sont précisément celles-là même qui nous seront nécessaires pour nous sauver nous-mêmes." Ian Mac Millan

#16 pc_wave

pc_wave
  • Membres
  • 12 messages
  • Genre :Homme
  • Lieu :qsdf


Posté 05 février 2012 - 15:22

Ok merci pour tes réponses qui m'éclaircissent bien, et surtout de te donner du mal là dessus! J'avoue que ça atteint quand même un certain niveau de complexité que je n'aurais pas imaginé en commençant... Mais puisque je suis lancé je continue!

En tout cas cet échange me fait énormément progresser :bien:

Pour ce que tu dis sur ce dont j'ai besoin, c'est au final la liste des ingrédients, car faut aller faire les courses... Avec un détail essentiel : la quantité, que je place dans la table IRI. Sauf que IRI n'est pour le moment que dans la chaine du haut. C'est là du coup où je me demande si la chaine "du haut" (1) est capable d'additionner à elle seule les ingrédients d'un tour, en fonction des quantités dans chaque recette (elle dédoublonne, mais retient-elle un décompte?). C'est pour ça que je pensais à étoffer la chaine du bas (2), qui est capable de distinguer + en détail les composants. Mais peut être il serait plus malin de compter le nombre de recettes dans la chaine 2, et avec ce résultat multiplier les ingrédients en réinjectant dans la chaine 1. Ca réduirait la complexité du diagramme.
Là où je veux aboutir in fine a quelques raffinements et rubriques supplémentaires, mais la structure de base est dans ce que je décris ici.

#17 Puimoisson04

Puimoisson04
  • Membres
  • PipPipPipPipPipPipPip
  • 1 640 messages
  • Genre :Homme
  • Lieu :Alpes-de-Haute-Provence
  • FM : FMP11A
  • OS : OSX6


Posté 05 février 2012 - 21:26

Pour connaître la quantité nécessaire de chaque ingrédient pour un tour, il faut raisonner à partir d'une occurrence de table de ING.
Pour chaque enregistrement de cette table (donc chaque ingrédient), il suffit de décompter le nombre de ITR du tour concerné avec une recette incluant l'ingrédient en question.
On commence donc par prendre en compte à partir de ING, toutes les recettes qui incluent cet ingrédient (lien ing_IRI, qui lie cet ingrédient à toutes les recettes le concernant).
De cette "liste" de recettes, on savoir celles qui sont présentes pour un tour donné dans ITR. On crée une globale Tour dans IRI (qui se renseigne automatiquement au chargement d'un tour) et on fait un lien double avec cette globale et l'IdRecette.
Enfin, dans ING un calcul qui décompte à travers les liens combien d'enregistrements de ITR correspondent à cet ingrédient et ce tour…

Fichier(s) joint(s)

  • Fichier joint  Tours_4.fp7   132K   11 Nombre de téléchargements 

Christophe

"Ce qui compte dans la sauvegarde des condors et de leurs congénères, ce n'est pas tant que nous avons besoin des condors, mais que nous avons besoin des qualités humaines nécessaires pour les sauver. Ce sont précisément celles-là même qui nous seront nécessaires pour nous sauver nous-mêmes." Ian Mac Millan

#18 pc_wave

pc_wave
  • Membres
  • 12 messages
  • Genre :Homme
  • Lieu :qsdf


Posté 05 février 2012 - 22:26

Bon, ben j'étais loin du compte... c'est effectivement très simple et élégant comme technique. J'étais empêtré à vouloir des calculs au niveau de la chaine du bas à partir de l'ancre Tour... ce qui était pas impossible mais foireux et + compliqué. J'aurais du prendre du recul et aller utiliser l'occurence ING.

Je vais méditer ça demain.

Merci encore !

#19 pc_wave

pc_wave
  • Membres
  • 12 messages
  • Genre :Homme
  • Lieu :qsdf


Posté 08 février 2012 - 12:25

Bon je reviens à la charge sur un problème classique mais d'où j'arrive pas à m'en sortir... je veux bien sur imprimer ce qu'il y a dans la TE (donc avoir une liste de taille variable selon les ingrédients présents), mais j'ai compris (un peu avec déception sur la "facilité" de filemaker) que ça n'était pas si simple.

Alors j'ai essayé de créer différents modèles d'impression similaires au modèle ITR_Recap, où je cherche à afficher tous les ingrédients (et leurs infos) liés à un tour.
Seulement dans toutes les tentatives que je fais (en me basant sur des OT différentes), il y a de gros problèmes dans les ingrédients affichés : il m'affiche au final la liste des 1er ingrédients de chaque recette, de chaque jour, sur un tour!

Pourquoi??

Moi je veux juste la liste de tous les ingrédients telle qu'elle apparait dans la TE. J'arrive pas à comprendre comment il lit la structure des liens pour aboutir au bon résultat dans un cas (la TE) et à autre chose dans un autre (le modèle). Ok c'est lié au fonctionnement intrinsèque d'une TE, mais comment la reproduire sur un modèle?


J'ai trouvé une alternative en exportant les enregistrements liés à partir de la table TOU (dans un autre fichier que j'imprimerai), sauf qu'il m'exporte tous les tours à la fois, or je ne veux que les enregistrements liés à 1 seul tour que je choisis...

S'il y avait juste 1 table intermédiaire entre TOU et ING je pourrais m'en sortir, mais là je n'y arrive pas. :(

#20 Puimoisson04

Puimoisson04
  • Membres
  • PipPipPipPipPipPipPip
  • 1 640 messages
  • Genre :Homme
  • Lieu :Alpes-de-Haute-Provence
  • FM : FMP11A
  • OS : OSX6


Posté 08 février 2012 - 13:43

Si dans un modèle de TOU tu actives uniquement les enregistrements liés de ING, tu as ta liste.
C'est l'action de script "Activer enregistrements liés" (avec les options "Uniquement les enregistrements liés" et "Utiliser un modèle de ING").
Christophe

"Ce qui compte dans la sauvegarde des condors et de leurs congénères, ce n'est pas tant que nous avons besoin des condors, mais que nous avons besoin des qualités humaines nécessaires pour les sauver. Ce sont précisément celles-là même qui nous seront nécessaires pour nous sauver nous-mêmes." Ian Mac Millan