Jump to content
  • 0

unieke sleutel (primary key) aanzuiveren


eldeka

Question

Ik weet dat dit een reeds veel besproken onderwerp is maar ik vind op het forum geen antwoord op het volgende probleem.

Na importeren van gegevens in een FMP DB heb ik in het unieke sleutelveld dubbele waarden. Ik wens die gewoon te elimineren.

 

In bijlage heb ik 2 scripts gemaakt.

Script 1 zou gewoon via een Loop de dubbele records moeten verwijderen. Pas na 7 uitvoeringen van het script zijn alle dubbele records verwijderd.

Script 2 markeert eerst de dubbele records om ze nadien te selecteren en dan gezamelijk te verwijderen. Dit lukt perfect in 1 run van het script.

 

Mijn vragen:

1) wat is er fout in Script 1?

2) Kan de oplossing met Script 2 eventueel uitgebreid worden met een variabele zodat op gelijk welk veld kan geselecteerd worden?

 

Graag wat ervaring van de profs.

Dubbels.fp7

Link to comment

19 answers to this question

Recommended Posts

  • 0
Het ontdubbelen is inderdaad al vaak langs gekomen. Het makkelijkste is toch proberen te voorkomen dat je dubbelen krijgt in je database.

Dat doe je door bij de import hier voorwaarden voor te maken en in de database een controle in te bouwen die dubbelen voorkomt (overslaat).

 

Betekent dit dat je voorwaarden kan instellen bij "Import records"?

Unieke waarden bepalen voor het doelveld OK, maar die worden toch bij het importeren niet gerespecteerd?

Link to comment
  • 0

Bij importeren kan je toch aangeven; "update matching records"?

Je kunt dan het pijtje veranderen voor een = teken om de voorwaarden aan te geven.

Op die manier kan je dus twee unieke waarden vergelijken. Als ze gelijk zijn update hij het gevonden record.

Onderaan kun je dan ook nog aangeven met een vinkje "add remaining data as new records" waardoor alle records die niet aan de voorwaarde voldoen toegevoegd worden als nieuwe records.

 

Gr. Niels

ps. Excuses voor de engels benaming, ik werk altijd in de engelse versie, dat ben ik nu eenmaal gewend.

Link to comment
  • 0

tackenco was me voor maar inderdaad gebruik update en ad new voor importeren van nieuwe bestanden. Zorg er ook voor dat als je geen uniek veld hebt (serie nummer bv) dat je dit maakt door meerdere velden samen te voegen met bv getasnumber. Op die manier maak je een unieke code en zal je bij import niets snel dubbele krijgen die je vervolgens weer wilt verwijderen. :D

Filemaker help file legt dit zeer goed uit trouwens :D

Methods of importing data into an existing file (engelse versie, de nederlandse moet je even zelf bedenken)

Link to comment
  • 0

Aan allen die hierop gereageerd hebben hartelijk dank.

 

Ik vrees echter dat er een klein misverstand is.

Ik wil namelijk in een uniek veld van een lege tabel de waarden van een externe file (bv. Excel) invoeren die niet uniek zijn.

De oplossing met matching field en de samengestelde sleutel is mij wel bekend maar biedt volgens mij geen oplossing voor dit probleemke.

Ik vermoed dat een script achteraf om de dubbels te verwijderen veruit de beste oplossing biedt.

Link to comment
  • 0

OK, voor achteraf kan het misschien zoiets zijn.

 

Als je een relatie aanmaakt met de zelfde tabel op basis van je unieke veld.

Je maakt een layout waar een portaal van die relatie staat.

Je ziet dan in het portaal alle records die dezelfde unieke key hebben.

één daarvan moet blijven staan en de rest mag weg.

Je kunt dan eenvoudig met een script de portaalrecords weggooien en er één overhouden.

 

Loop

Exit Loop If (Count(Portaal::unieke key) = 1)

Go to Portal Row [select; First]

Delete Portal Row [No dialog]

End Loop

 

Is dat iets?

Link to comment
  • 0
Aan allen die hierop gereageerd hebben hartelijk dank.

 

Ik vrees echter dat er een klein misverstand is.

Ik wil namelijk in een uniek veld van een lege tabel de waarden van een externe file (bv. Excel) invoeren die niet uniek zijn.

De oplossing met matching field en de samengestelde sleutel is mij wel bekend maar biedt volgens mij geen oplossing voor dit probleemke.

Ik vermoed dat een script achteraf om de dubbels te verwijderen veruit de beste oplossing biedt.

 

Ik heb hetzelfde probleem gehad en dit opgelost door in de lege tabel eerst een "nep"-record aan te maken. Vervolgens kun je dan bij het importeren bovenstaande functie met het vergelijken van matching fields gebruiken. Daarna de eerste aangemaakte "nep"-record weer verwijderen.

Link to comment
  • 0

Ik heb hetzelfde probleem gehad en dit opgelost door in de lege tabel eerst een "nep"-record aan te maken. Vervolgens kun je dan bij het importeren bovenstaande functie met het vergelijken van matching fields gebruiken. Daarna de eerste aangemaakte "nep"-record weer verwijderen.

 

Sorry, maar dit lukt me echt niet. Toch bedankt! :oops:

Link to comment
  • 0

Als ik het goed begrijp heb je een lege tabel met daarin een uniek veld, laten we zeggen : Kleur.

In deze tabel importeer je vanuit bijv. Excel een bestand met diverse records en een veld dat ook Kleur heet of kleuren bevat. Bijvoorbeeld: Rood, Zwart, Rood, Wit, Wit, Zwart.

De bedoeling is om in FMP een tabel op te bouwen met records die unieke kleuren bevatten? Het resultaat na import zou hier dan moeten zijn: Rood, Zwart, Wit.

Begrijp ik het zo goed?

Link to comment
  • 0

Inderdaad... misschien stel ik de importhandelingen niet goed in; maar ik heb zowat alles uitgeprobeerd en de help geraadpleegd.

Mijn excel-file bevat één kolom met getallen (kan ik niet in bijlage toevoegen) en ik wil die invoeren in de lege FM-file met één uniek veld (in bijlage).

 

Er worden steeds alle getallen ingevoerd. Ook alle dubbels dus.

ImporteerExl.fp7

Link to comment
  • 0

Ik begrijp het nog steeds niet erg goed ben ik bang.Stel je hebt een bestand met kleur wat al genoemd is.

Je wilt dus elke keer importeren en alleen records toevoegen als de kleur nog niet bestaat.

Dan doe je toch de import met als basis dat als de kleur gelijk is je niet importeer?

 

Je geeft een voorbeeld bestand maar dat is alleen een veld met als kenmerk dat het uniek moet zijn. Daar kan ik verder ook niets van maken ben ik bang?

De bedoeling van een uniek veld is dat het echt uniek is? Maakt verder niet uit als je met het wissen van de dubbelen uit de voeten kan is prima maar ik blijf het vreemd vinden? :?

Link to comment
  • 0
Ik begrijp het nog steeds niet erg goed ben ik bang. Stel je hebt een bestand met kleur wat al genoemd is.

Je wilt dus elke keer importeren en alleen records toevoegen als de kleur nog niet bestaat.

Dan doe je toch de import met als basis dat als de kleur gelijk is je niet importeer?

 

Je geeft een voorbeeld bestand maar dat is alleen een veld met als kenmerk dat het uniek moet zijn. Daar kan ik verder ook niets van maken ben ik bang?

De bedoeling van een uniek veld is dat het echt uniek is? Maakt verder niet uit als je met het wissen van de dubbelen uit de voeten kan is prima maar ik blijf het vreemd vinden? :?

 

Niet bang zijn beste pjotter. Het punt is dat ik een veld gedefinieerd heb dat uniek is maar ook GEEN WAARDEN inhoudt. NUL records dus.

Ik wil nu records importeren maar alleen unieke waarden toevoegen.

Dit kan in heel onze speurtocht blijkbaar alleen door de dubbele waarden nadien via een script te elimineren. En dat lukt me intussen prima.

Waarvoor dank aan alle medezoekers! :lol:

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...