Tack för alla tips!
Du har rätt, det kanske är bättre att beskriva uppgiften lite mera - my miss...
Jag har redan gjort detta i Acces några gånger, så det som är nyast för mig är att använda FM. Meningen med att kolla hur "förekommande värden" kan visas i FM var att få hjälp med ett steg i analysarbetet, inte nödvändigtvist hela uppgiften.
Hursom...
Uppgiften är att höja priserna på tusentals kunder.
Det urgamla faktureringssystemet tillåter förändringar uteslutande genom användargränsnittet, och är inte anpassad för att hantera sådana massvisa uppdateringar. Därför tankar vi ner tabellerna från detta system som jag laddar upp i FM där jag analyserar data och hanterar alla förändringar med hjälp av en manus. Jag skapar nya tabeller som vi sedan tankar upp i faktureringssystemet, och voilá - vi har nya priser!
Tyvärr är det ingen utveckling av faktureringssytemet, "bara" att ta skiten från ett system, jonglera med data på ett smart sätt i ett annat system där man kan jonglera med data, sen tanka upp det nya data i faktureringssystemet. Dvs jag styr inte hur koderna väljs, jag anpassar mig hur faktureringssystemet gör.
I faktureringssystemet väljer användare själva vilka koder de vill skapa, dvs det är inte systemet som automatiskt ger en ny kod. Detta innebär att folk väljer koder som har någon betydelse för de, och på så sättet följer koder inte varan i sträng ordning: de är huller om buller.:tveksam:
Kunder delar priser med varann, dvs två eller hur många som helst kunder ha samma priskod. Om två grupper av kunder ("höja" och "ej höja" - vi får listan av säljarna) använder samma priskod då måste vi flytta ena gruppen till en ny kod, annars antigen båda grupper eller varken av de får höjningen.
För att lösa sådana "krockar" måste man kolla vilka priskoder som krockar. Sedan skapar man nya priskoder för att ersätta priskoderna i en av grupperna. Här använder jag listan på förekommande värden.
Priskoderna är 3 karaktär långa där 0-9 och det latinska alfebetet är tillåtna. 36 karaktärer sammanlagt. Jag behandlar denna kod till som nummer i bas 36 och konverterar till ett nummer i bas 10: med nummer kan man man kan lätt sortera och räkna fram skillnaden mellan olika koder. Här använder jag Middle() och tack för tippsen om Let() - jag skrev ut hela listan på alla 36 karaktärer.:">
Iom nästa lediga nummret är inte nödvändigt är det sista +1, så letar manuset igenom listan på förekommande värden och väljer en "lucka" där skillnaden mellan koder som följer varann enligt sorteringen är högre än 1. Den nya koden i bas 10 räknas om till ett nummer i bas 36 och las till till listan på förekommande värden. Fram till nästa priskod som krockar och börja om...
Det blir en likadan manus till för att även olika priskoder använder samma prisberäkningar, och där kan krockar förekomma också. Som tur är så det är likadana koder.
I Acces körde jag med SELECT DISTINCT. I FM ger jag varje rad inom tabellen som innehåller kundnr och priskod (det finns ingen tabell bara på priskoderna iom faktureringssytemet är inte relational databas) ett löpnummer. Self join och If() ger mig en flag ("Unique") som identifierara en enda förekomst av varje priskod. Find på denna flag visar en lista på alla förekommande värden, utan upprepningar.
Det som jag frågade om var hur FM funkar gentemot Acces när det gäller länkar. Som jag skrev, jag skulle förvänta mig att 9 värden i mitt exempel (se exemplet med 3 stycker aaa i min tidigare inlägg). Och 3 av de 9 har den där flag, dvs bör visas om jag kör find på "Unique". Men jag får ett enda värde som får flag, som är precis vad jag är ute efter, men då är jag förvirrad om hur join väljer vilka värden som matchas. Hur funkar detta i FM egentligen?
Tack!