Mitt tredje tips gäller mera generellt hur man kan stöpa om information i Filemaker från en form till en annan form man har större behov av. Men mera specifikt handlar det om att skapa en fungerande sortering på det numreringssystem som används i akademiska uppsatser och även på många andra ställen. Ni vet det här:

1. Inledning
1.1 Bakgrund
1.1.1 Problembeskrivning
2. Analys
2.1 Teorietisk bakgrund
2.2. Valda teorier
2.3. Varför klipper jag mig inte och skaffar mig ett riktigt jobb!
3. Slutsats
3.1. Dags för en öl!

Fördelen med systemet att ha fler och fler grupper av siffror är att det är lätt för människor att läsa och förstå och jobba med.

Nackdelen är att datorer inte begriper sorteringen, och gör fel. Detta är tex en bokstavstrogen sortering:

2.
2.1
2.12 <-- FEL
2.3
2.4

Felet är ju att när man sorterar alfabetiskt så kommer både 1, 10 och 100 alla före 2, men numeriskt så kommer ju 1 först, följt av 2, följt av 10 och sedan 100.

En annan nackedel med akademiska sorteringssiffor är att det går det inte lätt att konvertera dessa nummer med flera punkter i till riktiga decimaltal. Därav nedanstående övningar.

I denna artikel har jag med hur man omvandlar en akademisk sortering till en rent numerisk, som man sedan kan sortera poster med. Vad jag hoppas visa är att man kan laborera med text-funktioner som tex MiddleWords för att plocka ut de information ur ett fält och stöpa om den informationen i den form man vill ha. Har man väl fått in information i en databas brukar man kunna få ut den i den form man vill ha den.

Vi behöver:

  • Ett fält att ange "akademisk sorteringssiffra".Sorteringssiffra_text

  • Åtta fält som plockar ut upp till åtta "ord". 2.1.3 är tex tre "ord", 2, 1 och 3. Att jag satt en gräns vid 8 ord är förmodligen långt ovan vad man kan behöva, men det betyder att vi skulle kunna ha avsnittet 2.1.3.1.2.3.2.3. Lite överdrivet mycket.. Detta ärWord_01, Word_02 osv.

  • Ett fält som omvandlar våra åtta ord tillbaka till siffror och plussar ihop dem.Sorteringssifra_numerisk

Det första tricket är att vi läser av det första, andra tredje ordet på det här viset:

Word_01 fältet innehåller beräkningen: MiddleWords ( Sorteringssiffra_text ; 1 ; 1)
Word_02 fältet innehåller beräkningen: MiddleWords ( Sorteringssiffra_text ; 2 ; 1)
Word_03 fältet innehåller beräkningen: MiddleWords ( Sorteringssiffra_text ; 3 ; 1)

...osv för de andra fem fälten.

Om vi har sorteringsiffran_text = 2.3.2 så innehåller
Word_01 = 2
Word_02 = 3
Word_03 = 2

Det andra tricket är att vi multiplicerar det första ordet med talet 1 följt av 16 nollor. Nästa ord multiplicerar vi med 1 följt av 14 nollor, dvs två nollor mindre än föregående. Sedan fortsätter vi så ner till sista ordet. Alla ord multiplicerar med ett tal som innehåller två nollor färre än föregående.

Så här ser beräkningen ut i fältet "Sorteringssiffra_numerisk":

Word_01 * 10000000000000000 + /* Denna rad innehåller 16 nollor */
Word_02 * 100000000000000 + /* Denna rad innehåller 14 nollor */
Word_03 * 1000000000000 + /* Denna rad innehåller 12 nollor */
Word_04 * 10000000000 + /* Denna rad innehåller 10 nollor */
Word_05 * 100000000 + /* Denna rad innehåller 8 nollor */
Word_06 * 1000000 + /* Denna rad innehåller 6 nollor */
Word_07 * 10000 + /* Denna rad innehåller 4 nollor */
Word_08 * 100 /* Denna rad innehåller 2 nollor */

(Om du inte sett det förut så betyder /* "Här börjar en kommentar i en beräkning" och */ betyder "Här slutar en kommentar i en beräkning".)

Ovanstående beräkning fungerar så att den ger en sorts positionssystem, där varje ord som består av 0-99 (också överdrivet mycket), får två egna positioner i en lång siffra.

Nedan här ser det ut i Filemaker när det är klart och man sorterat på det numeriska sorteringssiffran. Notera att 2.12 kommer EFTER 2.2, som det skall och att 2.99 kommer före 3, också som det skall.

Förresten, istället för att göra detta i separata fält så kan man både göra det i ett fält och även med egna funktioner istället, men det är inte fullt så pedagogiskt som detta.

Senast redigerat 2009-12-07 22:42