Enkel (?) FileMaker-fråga: Slå samman relaterade poster?

Tråden skapades och har fått 1 svar. Det senaste inlägget skrevs .
1

Det här borde vara lättlöst, men jag är osäker på vad som är bästa metoden.

Låt säga att jag har tre tabeller.

1) Tabellen Meningar innehåller
a) ett textfält med en mening (lite text
b) ett annat fält "StyckeID" som används för att relatera till nästa "överliggande" fält i nästa tabell

2) Tabellen Stycken, innehåller
a) StyckeID, som bildar relation till de meningar som ska ingå i stycket
b) en portal som visar de relaterade meningarna
c) ett fält "TextID" som som används för att relatera till nästa "överliggande" fält i nästa tabell

3) Tabellen Texter, innehåller
b) TextID som används för att relatera till underliggande stycken i föregående tabell

Nu till frågan: Hur gör jag för att enklast möjligt lägga samman de meningar och stycken som hör till en viss text och sedan visa detta på Text-layouten

Det egentliga exemplet är lite mer komplicerat, men principen är den samma, längst ner finns ett antal poster med lite olika data, som ska sammanfogas i lite större enheter, som i sin tur ska sammanfogas till ännu större enheter, osv i några nivåer

Hur gör man det här smartast?

Ola, var är du?

Här är jag!

Mergefält är nog bästa metoden - du skapar ett textobjekt (välj textverktyget), rita en textruta, tryck kommando + m (Motsvarar meny-alternativet Sätt in > Mergefält), välj relation, välj fält. Formatera genom att markera hela mergefältet, dvs inklusive "<<Relation::Fält>>". Texten kommer att hålla sig inom ramen du ritat och växa neråt. Du kan ha radbrytningar också.

Om du behöver villkorsstyrda texter (kanske inte all text skall synas och det skall därmed inte bli tomma rader eller något liknande), så skapar du istället beräkningsfält, dessa innehåller beräkningar av typen

Relation::Fältnamn1 & " " & Relation::Fältnamn2

eller kanske

If(IsEmpty(Relation::Fältnamn1); ""; Relation::Fältnamn1 & " ") & If(IsEmpty(Relation::Fältnamn2); ""; Relation::Fältnamn2 & " ") & If(IsEmpty(Relation::Fältnamn3); ""; Relation::Fältnamn3 & " ")

Men ditt problem är snarare att du behöver visa flera relaterade poster, det är lite klurigare. Det finns en ny logik-funktion i FileMaker som heter GetNthRecord ( fält ; postnummer ), jag har inte provat den ännu, men den borde fungera.

Vad den gör är att den hämtar den post som har det nummer du anger. Om du har en relation som hittar fyra poster i en annan tabell så borde du alltså kunna använda dig av GetNthRecord ( relation:fält ; 1 ) & " " & GetNthRecord ( relation:fält ; 2 ) & " " & GetNthRecord ( relation:fält ;3 ) & " " & GetNthRecord ( relation:fält ; 4) för att få allihopa. Detta bör du kunna göra i ett nytt beräkningsfält. Lägg till lite logik som kollar om rep x är tom och lägg inte till mellanslaget i så fall, så bör du vara hemma. Använd sedan dessa beräkningsfält som Mergefält för att få text i layout som flödar.

En workaround är att bygga flera relationer också, då får mergefältet innehålla:

<<Relation1::Fältnamn>>
<<Relation2::Fältnamn>>
<<Relation3::Fältnamn>>

... istället. Då kan du även få dina meningar i exakt rätt ordning i stycket, lägg till en sorteringssiffra (ett eget fält) i tex tabellen meningar och bygg en relation på två fält, sortering och id_stycke. Jo, på vänstra sidan får du skapa beräkningsfält som heter och innehåller 1, 2, 3 osv, att användas som nyckelfält på vänstra sidan i relationen.

Senast redigerat 2007-05-17 01:04
1
Bevaka tråden