Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.

Att relatera ett repeterat fält

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

Hej igen!

Ska försöka vara så konkret som möjligt,
Hur kan man med ett beräkningsfält hämta data från ett icke repeterat fält i en relaterad tabell baserat på värdet i ett repeterat fält, t.ex repetition 2 i ursprungstabellen.

Vet inte riktigt om det går att förstå vad jag säger.. Ger gärna mer info om det behövs

Edit: Jag förstår fan ta mig inte själv vad jag skrivit, så jag ger ett exempel för säkerhets skull:

2 tabeller
1:a inehåller 5 fält
2:a inehåller x fält + ett repeterat fält
tabellerna är relaterade med det repeterade fältet

Jag vill skapa ett beräkningsfält i tabell 2 som hämtar data i tabell 1 baserat på vad som står i t.ex repetition 3 i det relaterade fältet.

Hade gått enkelt att lösa med en portal, men det fungerar inte i längden, jag vill helt enkelt ha datan inskriven även i tabell 2.

MVH
Kentaxel

Senast redigerat 2008-11-20 14:47

Nytt beräkningsfält i tabell 2 som heter Ola_e_Fiffig med beräkningen GetRepetition(repeteradefältetsnamnpassarhär; 3)

Skapa sedan relationen mellan de två tabellerna baserat på fältet Ola_e_fiffig istället.

Eventuellt så tänker du tvärtom, jag vet inte hur din databas ser ut, men eftersom du beskriver i ordningen första tabell och andra tabell, så kanske det är så att den layout du vill se detta i visar poster från tabell 1. I så fall finns det en annan lösning.

Senast redigerat 2008-11-20 20:06

nja, alltså jag vill ju hämta data från ett icke repeterat fält. Det repeterade fältet finns i tabell 2 vari repetition 1 ska hämta data från post 1 i tabell 1 och repetition 2 ska hämta data från post 2 i tabell 1 osv.

Det kanske inte ens går, för hur jag än vrider på detta får jag antingen bara värdena från posten i tabell 1 relaterat till första repetitionen eller värdena från den först skapade posten i tabell 1 av de som skrivs in i det repeterade fältet i tabell 2.

Blir lätt rörigt när jag ska försöka mig på att beskriva det men det hela ska alltså fungra ungfär som en portal där tabell 2 t.ex är en order som visar olika produkter från tabell 1.

MVH

Ok, men du berättade inte att det var så, rep 1 skall hämta från post 1 och rep 2 skall hämta från post 2 osv. Du vet, som man frågar får man svar!

Du missar kanske även för att "hämta data", så behöver du bara skapa ett beräkningsfält i tabell 2 som innehåller det fält du vill hämta där borta på formen:

relationens namn::fältets namn

Då kan man se samma data i tabell 2 som finns i tabell via relationen.

Förmodligen är din databasmodell fel, du bör ändra dina fält så att de är "vettiga", men återigen, jag ser inte din datbas, vet inte vad du vill åstadkomma, alltså är det svårt att ge råd och tala om vad det är som är en vettig databasstruktur som löser ditt problem.

Är det här en ny konstruktion eller försöker du hantera att en gammal databas har en tokig struktur?

Det finns även en funktion som heter GetNThRecord(relationensnamn::fältets namn; x), som kan vara en lösning (tillsammans med de övriga sakerna jag föreslagit. Den funktionen returnerar post nr x (säg tex post 3 som i ditt exempel), av de poster som tabell 2 ser i tabell 1 via relationen.

Blev du klokare av vad jag skrev ovan?

Nej jag klandrar dig verkligen inte, som sagt har jag lite svårt att uttrycka mitt problem, varför det antagligen är svårt att svara på min fråga, men all hjälp uppskattas

Egentligen är det med rep1 hämtar data från post 1 och rep2 hämtar data från post2 inte heller rätt beskrivet.

Problemet och strukturen är som följer:
i min tabell1, vi kallar den "Material", registrerar jag material i olika poster, säg att jag har 20 olika poster med 20 olika material. Sen finns det lite olika specifikationer för dessa material tex:

Material_ID
Färg
Bas
osv.

Sen har jag tabell2, vi kallar den "Produkt" i denna finns beskrivet hur man ska kombinera x antal olika materialen från "material". Alltså har jag en rad fält specifika för "Produkt" tex

Benämning (vad materialkombinationen heter)
Egenskaper (specifikt för kombinationen)
material_ID (repeterat fät i vilka man fyller i de material (från "material" som ska Kombineras för den produkten)
osv.

Vad jag sen försöker åstadkomma är ett antal fler repeterade fält som hämtar den data som är specifikt för korresponderande repetition i material_ID alltså:

(Tabell "Produkt" Fält Material_ID) skrivs i manuellt
rep1: 4578 rep2: 6890 rep3: 3123

(Tabell "Produkt" Fält Färg) Fylles i autmatiskt med data från "Material"
rep1: Färg för materail_ID 4578 rep2: Färg för materail_ID 6890 rep3: Färg för materail_ID 3123

(Tabell "Produkt" Fält Bas) Fylles i autmatiskt med data från "Material"
rep1: Bas för materail_ID 4578 rep2: Bas för materail_ID 6890 rep3: Bas för materail_ID 3123

Problemet är ju att "Produkt" villa bara relatera till "material" med den första repetitionen i material_ID och hittar alltså bara det första materialet.

Har inte kollat på GetNThRecord men det skulle väl inte ge mig möjlighet att hitta rätt post baserat på material_ID?

i övrigt är databasen en blandning av nya och gamla tabeller, men att omstrukturera skulle nog vara fullt möjligt, är kanske även enda alternativet.

Hoppas detta är begripligare.

MVH

Ok, prova då att göra ett repeterat fält på BÅDA sidor då. Är inte det en lösning? (Relationer fungerar så att rep 1 "går mot" rep 1 och rep 2 mot rep 2 och rep 3 mot rep 3 osv.

Dessväre går inte det heller, då repetition 2 ska hämta data i en annan post än den repetition 1 är relaterad till.

Har du provat?

Förresten, lösningen är att införa en tabell till, på samma sätt som man i FileMaker har order, orderrader och artiklar, där orderrader sitter "emellan" order och artiklar. Du försöker skippa orderrader genom att på ordern ha orderraderna i repeterade fält. Vilket som du märkt inte fungerar.

Så i ditt fall heter det alltså Material (dvs Artiklar) och Produkt (dvs Order) och för att knyta ihop dessa två skall du skapa Produktrader som innehåller ID på Materialet och ID på Produkten.

Du ser hur man kan konstruera en sådan grej dels i de bifogade bilderna och dels i den bifogade databasen.

Databasbilden är meningen att illustrera att man klickar på en ledig rad i portalen (sista raden) och skriver ett id på ett material, då skapas det automatiskt en post i tabellen produktrader och de fält som finns i produktrader fylls i automatiskt med länkade data.

Du ser även i relationsdiagrammet hur man konstruerar denna mycket vanliga konstruktion i FileMaker-sammanhang. "Tänket" med order, orderrader, artiklar återfinns med samma eller andra namn i massa olika system. Just för att relationstypen många till många i Filemaker kräver en mellantabell.

Dessutom har jag bifogat en databas så att du kan se exakt hur man bygger detta. Enjoy!

Tanken var precis som du säger att skippa mellansteget med orderrader, har redan försökt med denna struktur men den är inte riktigt tillfredställande i längden tyvärr.

Tack för hjälpen hur som hellst

Ok, men kan det vara så att de icke tillfredställnade resultat du har fått går att lösa? För det är nämligen så att om du vill göra det du förklarar så är den enda lösningen just orderrader. Så kanske du skall berätta om de icke tillfredställande sakerna istället så kan du få lösningar på dem. Det finns en anledning att denna konstruktion är så vanlig i FileMaker-världen.

Ja det var det jag misstänkte dock, att det inte går att lösa på annat sätt, men frågan är ju fri.

De icke tillfredställande sakerna är precis de jag talat om, att jag inte kan få repeterade fält att hämta data i annat än relationen till den första repetitionen, det har i längden att göra med komplikationer i layoutstrukturen och ett försök att slippa massa beräkningar och onödig data.

Resultaten kan jag åstadkomma det är väl mest bara en fråga hur jag tänker räkna ut dem, jag får ta lite omvägar helt enkelt.

1
Bevaka tråden