Ga naar inhoud
  • 0

Interne relatie (selfjoin) om dubbels te zoeken


Iris De Rijcker

Vraag

Geplaatst:

Ik heb een selfjoin gedefinieerd om dubbels te zoeken, helemaal zoals Filemaker Help het beschrijft (met de velden 'Counter' en 'Check duplicates' en een match field). Maar in het veld 'Check duplicates' staat er overal 'duplicate', ook bij de unieke velden.

 

Heb iemand anders op het net gevonden met hetzelfde probleem, maar de oplossing die daar gegeven wordt is niet wat ik wil.

http://www.webservertalk.com/archive287-2005-10-1227551.html

Ik wil namelijk (zoals in Help staat) de 'extra' records vinden: dus als er 2 dubbels zijn, wil ik dat er bij de eerste 'unique' staat en bij de tweede 'duplicate'.

 

Had ook ergens dit gelezen:

"The record is seeing itself at the other end of your relationship. Make

sure your self-join relationship uses two predicates:

1) MatchField = MatchField

2) SerialID <> Serial ID"

Maar dat brengt ook geen soelaas.

 

Kan iemand mij helpen??

3 antwoorden op deze vraag

Aanbevolen berichten

  • 0
Geplaatst:

Merci Burggraaf, maar is wat daar staat niet exact hetzelfde als in de Help? Dat heb ik helemaal op de letter toegepast, maar het werkt dus niet.

 

1. Heb een self-join gelegd van Registratie naar Registratie met als Match Field een Calculation Field 'DatumNaam' (Datum & Naam), van dat veld moet ik dus de dubbels vinden.

2. Dan een Text Field 'Counter' gemaakt: auto-enter serial number.

3. Heb dan een Calculation Field gemaakt 'Check duplicates': If(Counter = Registratie 2::Counter; "Unique"; "Duplicate").

4. Heb via Replace een serial number ingevoegd voor alle records in het veld 'Counter'.

 

En nu staat er dus in elk veld Duplicate en nergens Unique, terwijl er zeker dubbels zijn. Als ik ! zoek in het veld 'DatumNaam' dan zijn er veel dubbels.

 

Ik heb dat voorbeeldje gedownload en bij mij is het exact hetzelfde, behalve dat mijn Match Field een Calculation Field is en in het voorbeeldbestandje is het Match Field een indexed Number Field. Kan het daaraan liggen?

  • 0
Geplaatst:

Zal misschien even het probleem schetsen waarvoor ik die duplicates denk nodig te hebben.

 

- Ik heb een Events databank waarin ik voor event X mensen kan registreren. De registraties komen in de tabel Registraties.

 

- Voor al de geregistreerden wil ik een onkostennota genereren die in de tabel Onkostennota terechtkomt.

 

- Ik duid voor elke geregistreerde aan of ze al dan niet al betaald hebben en op welke datum en laat dat mooi in de onkostennota verschijnen (voor degenen die betaald hebben komt er een tekstje en voor degenen die niet betaald hebben een ander tekstje).

 

- So far so good. Werkt perfect. MAAR 1 persoon kan maar maximum voor 12 personen inschrijven (= één tafel). Mensen die meerdere volledige tafels willen boeken registreer ik dan meerdere keren zodat ze meerdere keren in de lijst voorkomen (dat is noodzakelijk om achteraf de tafelnummers toe te wijzen).

 

- Probleem is nu dat zo iemand die meerdere tafels boekt wel maar 1 onkostennota moet krijgen waar het totale bedrag + het totaal aantal personen op staat. Dat is al gelukt. MAAR het kan zijn dat ze bv. alleen nog maar de 1e tafel betaald hebben en de tweede niet.

Op de onkostennota zou er moeten staan 'Wij hebben van u al bedrag X op datum Y ontvangen en bedrag A op datum B enz., bedrag Z staat nog open'.

 

- Ik heb een veld 'Betaald' en een veld 'Betaald op'. Maar die velden zijn dus gelinkt aan 1 record in de tabel 'Registraties' terwijl ik voor de Onkostennota gegevens moet gaan halen uit meerdere records (normaal max. 4). Ik was heb al in het script om de onkostennota te maken een find request gedefinieerd om die records samen te nemen en zo de totale prijs en het totaal aantal personen te bekomen. En dat lukt, want dat is maar een som maken. Maar dan zit ik strop. Stel bv. dat:

record 1: bedrag betaald A euro, betaald = 1, op datum X

record 2: bedrag betaald B euro, betaald = 1 op datum Y

record 3: bedrag betaald C euro, betaald = 1 op datum Y

record 4: bedrag betaald 0 euro, betaald = 0 op datum 0

Hoe kan ik een tekst genereren die dan zegt:

'U heeft A euro betaald op X en B+C euro op Y. U dient nog Z euro te betalen'.

 

Misschien is het allemaal wat vergezocht of te hoog gegrepen voor een amateur als ik. Of niet?

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...