2012

Mar

3

Av

Jag var helt säker på att jag skrivit om hur man söker efter dubbletter i FileMaker, men så var det inte! Söka dubbletter är något man gör ganska ofta i FileMaker och tyvärr finns det inget “enkelt” sätt. 

Det finns ett sökkommando för att hitta alla poster med ett värde i ett fält som förekommer fler än en gång i databasen, sök efter “!” fältet för att hitta dessa. Oftast vill man ha kvar en av dessa poster av varje, så det går inte bara att att radera dessa direkt.

Sökning efter “riktiga” dubbletter kan istället antingen göras med relationer eller manus, vilket man föredrar är en smaksak. Med “riktiga” dubbletter menar jag poster som kan raderas, det ska alltid finnas en post kvar för varje värde.

I den klassiska boken FileMaker Pro i praktiken finns båda varianterna beskrivna, i den här artikeln beskriver jag bara manus-varianten. Det finns även olika manus-varianter (såklart!), om man i förväg vet att det finns fler dubbletter än poster som ska vara kvar går det snabbare att leta upp de poster man vill spara, är det tvärtom söker man fram de som man vill radera. I det här exemplet använder jag den senare varianten, dvs. markerar de som är dubbletter.

Tanken är att först sortera posterna så att de poster som är dubbletter hamnar efter varandra för att sedan gå  genom alla poster och märka alla utom den första posten för varje värde. De poster som blir märkta är de som är dubbletter.

Det första du måste göra är att bestämma dig för hur du definierar en dubblett. Det kan vara poster med samma kundnummer, samma personnummer eller poster med samma gatuadress och ort. Om du vill hitta dubbletter som beror på flera fält kan det vara en idé att först göra ett beräkningsfält som slår ihop dessa till ett fält, det blir enklare. Resultat av beräkningsfältet kan t.ex. vara Text och formeln t.ex. “Gatuadress & Ort”.

I det här exemplet finns ett antal poster med samma kundnummer i ett fält som heter “Kundnummer”. Manuset inleds alltså med att sortera posterna efter fältet “Kundnummer”. En variabel används för att hålla reda på vilket kundnummer som bearbetas, alla utom den första posten med samma kundnummer tilldelas värdet 1 i fältet “Dubblett”.

Manuset ser ut så här:

HittaDubbletter
När manuset har körts kan du söka efter värdet “1″ i fältet “Dubblett” och radera dessa poster, endast 1 post för varje värde kommer då att finnas kvar i tabellen.

Egentligen behöver man inte gå genom alla posterna i tabellen, det räcker att gå genom de som det finns dubbletter av. Som ett första inledande manussteg kan du lägga till att söka efter “!” i fältet “Kundnummer”, då hittas bara de poster som har dubbletter och det är egentligen bara dessa som manuset behöver gå genom. Har du många poster i tabellen och du vet att det inte finns så många dubbletter kan det göra mycket när det gäller hastighet.

Skriv en kommentar

  • (will not be published)
  • seven × 3 =

Läs också: