Ga naar inhoud
  • 0

Tellen van unieke (geselecteerde) veldwaarden


HMJR

Vraag

5 antwoorden op deze vraag

Aanbevolen berichten

  • 0

Nee, altijd 1 waarde in het veld.

Veld 1 Record 1 waarde = A

Veld 1 Record 2 waarde = B

Veld 1 Record 3 waarde = A

Als alle records zijn geselecteerd dan zou het resultaat van de telling 2 moeten zijn.

Als de records 1 en 3 zijn geselecteerd dan zou het resultaat van de telling 1 moeten zijn.

Link naar reactie
  • 0

Volgens mij kan dit alleen als je tabel is gesorteerd op de inhoud van je genoemde veld.

Vervolgens heb je een berekend veld nodig met bijgevoegde code.

 

Let ( x = GetNthRecord ( veld1 ; Get(RecordNumber) - 1 ) ; If ( veld1 <> x ; 1 ; "" ) )

 

Zodra je dit gedaan hebt zorg dan dat het berekeningsresultaat niet wordt opgeslagen. Het veld moet de berekening zogezegd iedere keer opnieuw uitvoeren.

Deze berekening zet als het ware een vlaggetje (1) zodra de inhoud van veld1 anders als de inhoud van veld1 van het vorige record.

Verder is het wellicht nog nodig om een summary veld aan te maken die het totaal berekend van je 'flag' veld.

Link naar reactie
  • 0

met sql is dit sneller mogelijk denk ik. Het probleem met SQL is dat die geen "besef" heeft van de huidige foundset. Ik gebruik hiervoor altijd de IN waarbij ik een lijst opbouw met de IDs van de records in mijn foundset.

 

Verder is het dan gewoon deze calculatie:

ExecuteSQL ( "SELECT COUNT ( DISTINCT myField ) FROM myTable WHERE ID IN ( " & lijst van IDs & ")" ; "" ; "" )

 

de lijst van IDs moet wel komma separated zijn.

Link naar reactie
  • 0

En bij gebrek aan kennis zoals Yamas en Andries die hebben zou ik het met een Loop doen:

Teller begint op 1 omdat de eerste waarde altijd uniek is

Alle records sorteren op veldwaarde

Naar volgend record: als de waarde hetzelfde is, teller niet ophogen,

naar volgend record: als de waarde anders is dan de teller 1 ophogen.

Eindstand van de teller geeft het aantal verschillende waarden.

Link naar reactie

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...