Ga naar inhoud
  • 0

Case - geraak er niet uit


Stamper

Vraag

Drie velden : het eerste is VC_NC (voor of na christus met keuzerondje) en tweede is jaar1 (getal), het derde is tijdsperiode (berekeningsveld - niet opgeslagen opnieuw berekenen)

Om dit derde veld autom. te laten invullen tracht ik dit te doen met de Case-functie.

Als 1° veld gelijk is aan V.C. en het jaar1 bevindt zich tussen 1 en 100 dan is het derde veld 1° eeuw, enz...

Heb geprobeerd met de case-functie maar tot hiertoe mislukt dit.

Wat doe ik verkeerd....

Wie helpt me op weg ...

 

Case (

VC_NC = "V.C." and Sum ( Jaar1; "≥ 201 and ≤ 300"); "3° eeuw VC";

VC_NC = "V.C." and Sum ( Jaar1; "≥ 101 and ≤ 200"); "2° eeuw VC";

VC_NC = "V.C." and Sum ( Jaar1; "≥ 1 ≤ 100"); "1° eeuw VC";

"Onbepaalde eeuw")

Link naar reactie

8 antwoorden op deze vraag

Aanbevolen berichten

  • 0

De oplossing is om net andersom te werken:

 

Case(vc_nc="NC" and Jaar ≤ 100;"1° eeuw NC";

Case(vc_nc="NC" and Jaar ≤ 200;"2° eeuw NC";

Case(vc_nc="NC" and Jaar ≤ 300;"3° eeuw NC";

Case(vc_nc="NC" and Jaar ≤ 400;"4° eeuw NC";"onbepaald"))))

 

De Case-functie stopt namelijk zodra aan de eerst passende voorwaarde is voldaan.

Je kunt de keuze VC/NC ook uit alle regels halen en als aparte Case ervoor zetten:

 

Case(vc_nc="NC";

Case(Jaar ≤ 100;"1° eeuw NC";

Case(Jaar ≤ 200;"2° eeuw NC";

Case(Jaar ≤ 300;"3° eeuw NC";

Case(Jaar ≤ 400;"4° eeuw NC";"onbepaald"))));

 

Case(vc_nc="VC";

Case(Jaar ≤ 100;"1° eeuw VC";"voor Christus")

))

 

Maar om dit voor alle eeuwen te maken voor en na het jaar 0 wordt dit een hele lange formule. Waarschijnlijk zijn er wel mooiere oplossingen.

Link naar reactie
  • 0

@hiker

Nog eens een keer aan't testen geweest, gesleuteld etc... en kom er niet uit

Mocht het toch lukken dan is het zoals je aangeeft : een wréééééd "....lange formule..."

 

@fmwebshop

Dat is het, de eenvoud zelve ... en het geeft weer dat ik iets verder moet kijken dan m'n neus lang is ... heb me gewoon blind gestaard op de Case-functie :oops:

(mea culpa ....)

 

@Burodok

Ook getest en deze is nog korter, maar toegegeven ik snap nu de formule (nog) niet ... dus da's voor strakjes om deze te ontleden.

 

Aan allen, in elk geval m'n ongelooflijke en eeuwige dank en we hebben weeral bijgeleerd :D:D

Link naar reactie
  • 0
...maar toegegeven ik snap nu de formule (nog) niet ...

 

stel we nemen het jaar 1365.

gedeeld door 100 levert dat 13,65.

de ‘Int’-functie gooit vervolgens alles achter de komma weg en dat geeft 13.

daar tellen we dan 1 bij op omdat alle jaren tussen 1300 en 1400 niet bij de 13e eeuw horen maar bij de 14e.

 

en om ervoor te zorgen dat bijvoorbeeld het jaar 100 bij de 1e eeuw wordt gerekend en niet bij de 2e, moet er eerst 1 jaar van het jaartal worden afgetrokken.

 

edit:

er ontbrak nog iets: om ervoor te zorgen dat de berekening ook goed gaat met negatieve jaartallen moeten alle negatieve jaartallen eerst positief gemaakt worden met de ‘Abs’-functie:

 

Int ( ( Abs ( jaar ) - 1 ) / 100 ) + 1

aangepast door Gast
Link naar reactie
  • 0

@Burodok

Uiteindelijk heb ik, na ontleding, jou formule gebruikt met een kleine aanpassing, nl

If ( IsEmpty ( Jaar1 ) or Jaar1 = 0; "Onbepaalde Eeuw" ; Int ( ( Jaar1 - 1 ) / 100 ) + 1 & "° Eeuw" & " " &

VC_NC)

Als de gebruiker het veld jaar niet invult (hoeft ook niet) of invult met 0 dan wordt dit in de formule opgevangen en krijgt het berekeningsveld de waarde "Onbepaalde Eeuw". (en een bericht bij "0" dat dit niet bestaat)

In tegengesteld geval kreeg je bij een leeg veld jaar1, "°eeuw" als resultaat - bij 0 in veld jaar1 verkreeg je 1° eeuw (beide logisch)

Gezien het jaar 0 niet bestaat, mag (kan) je ook geen 1° eeuw verkrijgen in het berekeningsveld

 

De Abs functie heb ik niet toegepast omdat de eeuw dan niet correct wordt berekend bij jaren die eindigen op 99 en 00, bijv. 199 maakt deel uit van de 2° eeuw - met de Abs behoorde hij toe tot de 3° eeuw.

Idem dito voor bv. 1999 - 2000 enz....

Link naar reactie
  • 0
De Abs functie heb ik niet toegepast omdat de eeuw dan niet correct wordt berekend bij jaren die eindigen op 99 en 00, bijv. 199 maakt deel uit van de 2° eeuw - met de Abs behoorde hij toe tot de 3° eeuw.

Idem dito voor bv. 1999 - 2000 enz....

 

waarschijnlijk staan je haakjes in dit geval verkeerd (net als de mijne in eerste instantie). wanneer je abs ( jaar ) - 1 doet gaat t goed, maar wanneer je abs ( jaar - 1 ) doet niet...

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