Jump to content
  • 0

Nesten van een formule


martindes

Question

Posted

Het nesten van formules blijft een beetje een probleem voor mij.

 

Bijvoorbeeld

 

Ik heb een veld waar een getal in kan staan maar ook tekst zoals RET, DNQ, DSQ of DNS

 

Van alle records wil ik de waardes die een getal zijn en de waarde DSQ bij elkaar optellen.

 

De andere waardes moeten niet meegeteld worden.

 

Volgens mij kan ik dat doen met een case functie waarin ik een count functie zou kunnen nesten. (of andersom)

 

En dat laatste lukt mij dus niet.

 

Kan iemand mij daarmee op weg helpen zodat ik wat beter vat krijg op het maken van geneste formules?

 

Met vriendelijke dank.

4 answers to this question

Recommended Posts

  • 0
Posted
Case ( Abs ( GetAsNumber ( Veld ) ) > 0 ; GetAsNumber ( Veld ) ; Veld = "DSQ" ; 1 ; 0 )

Gewoon logisch de stappen die je op papier zou doen achter elkaar zetten ... zodra er iets waar is, ben je klaar.

  • 0
Posted

Excuus voor de late reactie. Nogal druk en in China (waar ik verblijf) is dit forum af en toe niet bereikbaar.

 

Ik snap het een beetje.

 

De onderstaande formule krijg ik bijvoorbeeld niet voor elkaar met het nesten. Ik heb een geboortedatum en een overlijdensdatum.

Ik gebruik hiervoor 4 velden. "geboortedatum" "overlijdensdatum" "leeftijd" "leeftijd bij overlijden"

 

Wanneer de persoon nog leeft dan blijft het veld "leeftijd bij overlijden leeg. Is de persoon overleden dan blijft het veld leeftijd leeg en geeft het veld "leeftijd bij overlijden" de leeftijd weer.

 

Echter ik heb een aantal personen in de database waar ik of de geboortedatum en de overlijdensdatum niet van heb.

 

Nu verschijnt er in het veld leeftijd bij deze personen "2015" Dat is uiteraard de uitkomst van de formule omdat die begint te tellen bij het begin van de jaartelling.

 

Ik zou in het veld "geboortedatum" "onbekend" willen hebben wanneer de geboortedatum niet bekend is.

 

Wanneer ik in deze formule de regel "(IsEmpty (Geboortedatum));"Onbekend";" als eerste plaats dan kloppen de () niet meer. Dat snap ik dus niet.

 

Case

 

(IsEmpty (Overlijdensdatum);

 

Year ( Get ( HuidigeDatum ) ) - Year ( Geboortedatum ) - If ( Get ( HuidigeDatum ) < Date ( Month ( Geboortedatum ) ; Day ( Geboortedatum ) ; Year ( Get ( HuidigeDatum ) ) ); 1 ; 0 );

 

 

(IsEmpty (Geboortedatum));"Onbekend";

""

 

 

)

  • 0
Posted

Het probleem is dat je begint met

Case ( IsEmpty ( Overlijdensdatum ) 

Je moet je afvragen wat de meest significante factor is. In dit geval is dat de "Geboortedatum", want als die onbekend is kan je de leeftijd bij leven, noch bij overlijden uitrekenen.

 

De berekening voor de leeftijd bij leven zou er als volgt uit kunnen zien:

Case ( 
      IsEmpty ( Geboortedatum ) and IsEmpty ( Overlijdensdatum ) ; "Onbekend" ; 
      IsEmpty ( Geboortedatum ) ; "" ; 
      IsEmpty ( Overlijdensdatum ) ; Year ( Get ( HuidigeDatum ) - Geboortedatum + 1 ) - 1 ; 
      "" )

En de leeftijd bij overlijden zo:

Case ( 
      IsEmpty ( Overlijdensdatum ) ; "" ; 
      IsEmpty ( Geboortedatum ) ; "Onbekend" ; 
      Year ( Overlijdensdatum - Geboortedatum + 1 ) - 1 )

Je ziet dat de formule voor de leeftijdsberekening ook wat korter is dan de jouwe. Dat kan alleen maar omdat jij de leeftijd in jaren vraagt. De "-1" is omdat de jaartelling start in het jaar "1" terwijl wij leeftijd tellen vanaf "0", de "+1" is omdat wij de leeftijd aan het begin van de verjaardag een jaar opschuiven ipv aan het einde van de verjaardag.

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