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.

lägga ihop text i ett fält från flera relaterade fält

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

Finns det något enkelt sätt att skapa ett kalkylerande fält som kan lägga ihop text från flera poster i en relaterad tabell / portal?

Tyvärr inte. Men det finns "workarounds" (metoder att lösa ett problem som innebär att man kliver förbi det på något sätt).

Om du vill sammanställa information från flera poster så bygger man en liten "snurra" (det är en FileMaker Pro-term som används av FM-utvecklare, den refererar till att man bygger en loop som promenerer igenom alla hittade poster och gör något med varje post.)

Så nu kan nu lingon.

Dessa instruktioner fungerar i FM8, tidigare versioner kan göra något liknande.

Du behöver:
* Ett variabelfält att lagra resultatet i (definiera ett nytt textfält, döp det tex till Script_Vars_01_G (G som i Global eller snarare variebelfält, kryssa för att det är ett textfält, skapa fältet, klicka tillval > indexering, kryssa för variabelfält.

* Ett fält att lagra resultatet i på posten, ett textfält som i mitt exempel heter The_Secreet_Fountain_Of_Youth_Is_Located_At_This_Address bara för att ha något namn på det.

* Kanske en relation (om data du vill sammanställa finns i en annan tabell)

* Ett manus som är din snurra som innehåller följande steg:

- Gå till relaterade poster, visa endast relaterade poster, i rätt layout också
(Nu är du i den andra databasen och endast posterna som skall sammanställas syns)

- Gå till första posten

- Tilldela fält "Script_Vars_01_G"; "" (dvs stoppa in tom sträng här)

- Loop

- Tilldela fält "Script_Vars_01_G"; (vad du nu vill sammanställa, klicka ihop en beräkning här av de fält som finns i posten du står i)

- Gå till post - nästa (avsluta efter alla)

- End loop

- Gå till layout (nu är du tillbaka på posten du hoppade ifrån)

- Tilldela fält "The_Secreet_Fountain_Of_Youth_Is_Located_At_This_Address" ; "Script_Vars_01_G" (detta stoppar in resultatet i ett fält i posten du hoppade ifrån).

Klart!

Det finns ingen felhantering ovan, vad händer tex om antalet hittade poster är noll? Men lite skall du väl göra själv?

Finfint! Man tackar och bugar Ola, jag ska se om jag har tid att lägga in scriptet imorgon så återkommer jag snarast med mer tacksamhet alternativt frågor

Japp, nu har jag fått ihop det!
Jag fick göra ett par små justeringar för att få det att funka helt. Eftersom jag har de två tabellerna i separata filer, à la gammalt Filemaker manér, fick jag göra två script.
Det första steget i din mall gick bra och de relaterade filerna hittades i den andra tabellen men när jag sedan gick vidare med script-steget gå till nästa post gick den till den följande posten i original-tabellen och inte i den med de relaterade posterna.
-Finns det något sätt att navigera sig i en tabell som finns i en annan fil genom ett script i utgångsfilen?
Alltså definierade jag ett variabel-fält i den relaterade tabellen,(hittade inte någon kryssruta för variabelfält, så jag satte den i vanligt global läge)
Det första scriptsteget såg till att visa endast relaterade poster och jag kunde göra loop-scriptet i den relaterade tabellen så att fälten las ihop i global-variabel-fältet. Sen var det bara överflyttningen från det fältet till original-postens utsatta fält. En sak jag märkte var dock att jag inte fick med data från fältet i den sista av de relaterade posterna. Jag trixade runt en del och kom till slutsatsen att variabelfätet var fortfarande aktivt (dvs markerat med blinkande hår-streck) vid slutet av scriptet och den sista inmatningen hade alltså inte blivit sparat i fältet vid tidpunkten då fältets innehåll kopierades till original-tabellen. Du hänger säkert med på vad jag menar. Det löste jag med att lägga in scriptsteget gå till föregående fält i den relaterade tabellen.
-Finns det något annat sätt att gå ur ett fält för att spara dess innehåll?

Tusen tack igen för hjälpen!

Om du använder FileMaker Pro 8 och har tillgång till FileMaker Advanced kan du göra en egen funktion som lägger ihop ett eller flera fält från relaterade poster. Sök efter GetRows under Custom Function på www.briandunning.com, helt enkelt en kanonfunktion.

Du vet, som man frågar får man svar Jonas! Du berättade inte inte vilken version av FM du hade eller hur filerna och tabellerna var organiserade.

Om du också berättar vad du har i din första och andra databas, så slipper man kalla dem för första och andra databasen också. Kan vara lite lättare.

Har du TVÅ filer så behöver du två manus och en extra relation.

Översiktligt beskrivet så tar du i första databasen och visar rätt poster i den andra databasen med steget "Gå till relaterade poster, visa endast relaterade poster" och sedan körs steget "Utför manus" som utför ett manus i den andra databasen. Det manuset samlar ihop dina data (Manuset FM-snurran med loopen och "gå till nästa post" finns alltså i den andra databasen).

Sedan fortsätter manuset i den första databasen genom att läsa av innehållet i fältet "Script_Vars_01_G" (som finns i den andra databasen) via en konstantrelation och vips har du samlat ihop och flyttat data från flera poster i en annan databas dit du vill ha dem.

Det är ett vanligt fel du beskriver att sista posten inte kommer med, FM sparar inte förräns man lämnar en post och det löser man med steget "Lämna post" i slutet av FM-snurran (inte gå till fält som är inom samma post).

Ordförklaringar:
KONSTANTRELATION
Det är en relation mellan två tabeller där en post är relaterad till alla poster i den andra tabellen. Används oftast för att man lätt skall kunna lägga in saker i variabelfält och läsa av dessa i en annan tabell. På så sätt kan man lätt flytta många snuttar med information istället för att använda det mycket sämre alternativet kopiera och klistra in. Exempel: Jag vill skapa en order i ordertabellen och ta med kundens id, artikelns id och antalet, då kan jag använda Rel_X för att skjuta över info till tre fält variabelfält i den andra tabellen och sedan köra ett manus som skapar posten och petar in informationen från de tre variabelfälten till rätt fält i den nya posten.

I FM 3-6: Du skapar en relation mellan två tabeller/databaser genom att skapa ett fält i båda som i mina lösningar heter Rel_X. Det är ett beräkningsfält med beräkningen "X" och resultat: text. Sedan skapar du en relation mellan Rel_X i ena tabellen och Rel_X i den andra tabellen. På det viset har du skapat en konstantrelation mellan två tabeller.

I FM 7-8: Här behöver du inte Rel_X-fältet, för konstantrelation är "inbyggt". Skapa en ny relation mellan vilka två fält som helst i tabelldiagrammet, ange typ "X" i den lilla menyn istället för "=" (default). Klart!

VARIABELFÄLT
Ett fält som har samma innehåll i alla poster i en databas, det används för att lagra information när man kör manus. Detta kallas även Globala fält eller för fält med Globala lagring.

I FM 3-6: Skapa ett variabelfält, ange valfri typ.
I FM 7-8: Skapa ett fält av valfri typ, under inställningar för fältet, ange under fliken "Indexering": "Global lagring (ett värde i alla poster)".

Lycka till!

Någon dag när jag har tid skall jag kolla på Rolfs tips, verkar riktigt coolt.

Ursprungligen av Taz_1999:

Någon dag när jag har tid skall jag kolla på Rolfs tips, verkar riktigt coolt.

En av många användbara funktioner i FileMaker 8

1
Bevaka tråden