verjaardag berekenen in access 2013

Status
Niet open voor verdere reacties.

marcjaco

Gebruiker
Lid geworden
29 dec 2014
Berichten
36
beste,

ik verjaar 08/04/1958

ik wil in een query berekenen de juiste leeftijd bv vandaag, en volgend jaar moet er automatisch een jaar bijkomen.
Hoe doe ik dit in access2013?
met vriendelijke groeten
Marc
 
De leeftijd kun je makkelijk berekenen met DateDiff. Die functie heeft in Access een klein foutje, omdat die geen rekening houdt met de maand waarin je jarig bent, en daarom zit er een kleine toevoeging in de formule die dat oplost.
Code:
Leeftijd: DateDiff("yyyy";[Geboortedatum];Date();2;2)+(Format(Date();"mmdd")<Format([Geboortedatum];"mmdd"))

Verder kun je nog uitrekenen wanneer iemand weer jarig is:
Code:
Volgende verjaardag: DateAdd("yyyy";DateDiff("yyyy";[Geboortedatum];Date();2;2)+(Format(Date();"mmdd")<Format([Geboortedatum];"mmdd"))+1;[Geboortedatum])

En hoeveel dagen is dat dan?
Code:
Dagen tot verjaardag: [Volgende verjaardag]-Date()
 
dank je wel

Hoi, dank je wel,

ik heb nog 1 vraag'

ik vul in:

overleden op 01/01/2014
wij doen dan 2 maanden later een herdenking

nu wil ik automatisch een koppeling ald ik datum invul van overlijden dat er 2 maanden ( dus op maand) in een lijst deze persoon komt.

bv overleden: 01/Jan/2014

herdenking: maar 2014

Kan dat?

met vriendelijke groeten

Marc
 
De herdenkingsdatum is zelfs een stuk makkelijker te berekenen met DateAdd. De formule die je nodig hebt is dan:
Code:
Herdenkingsdatum: DateAdd("m";2;[Overlijdensdatum])
En als je de datums in een (maand)overzicht wilt zien, filter je op de maand.
Code:
Overzichtmaand:Month(DateAdd("m";2;[Overlijdensdatum]))
En filteren op komende maand doe je dan met
Code:
Month(Date())+1
Dan heb je elke maand de herdenkingen van de komende maand.
 
herdenking

dank je wel,

bij de vorige vraag, over die verjaardagen, lukt het niet in een formulier de vraag hoeveel dagen ( #naam als foutmelding ) voor de volgende verjaardag.

in een query lukt het wel, maar als ik dit overzet naar een formulier krijg ik deze foutmelding #naam

wat doe ik fout?

met vriendelijke groeten
mark
 
Je zet de formule over naar een formulier :). Ik zou hem in de query houden, en het extra veld dat je dan hebt toevoegen aan het formulier. Veruit de makkelijkste oplossing.
 
wat doe ik fout?
Je zet de formule over naar een formulier :). Ik zou hem in de query houden, en het extra veld dat je dan hebt toevoegen aan het formulier. Veruit de makkelijkste oplossing.
 
#Naam?

Als ik in het formulier =[qyr_LeeftijdBerekening]![Dagen tot verjaardag] zet krijg ik #Naam?

Als ik: = [Volgende verjaardag]-Date() zet krijg ik ook#naam? inhet formulier;

De andere query werkt in het formulier:=DateDiff("yyyy";[Geboortedatum];Date();2;2)+(Format(Date();"mmdd")<Format([Geboortedatum];"mmdd"))

wat moet ik veranderen in die queyy voorde dagen uit te rekenen naar een volgende verjaardag?

MVG

Marc
 
Ik snap niet precies wat je aan het doen bent; als je de berekening in de query maakt, zoals ik je heb aangeraden, dan is het berekeningsveld gewoon terug te vinden in de lijst met velden, en kun je het veld dus gewoon naar je formulier slepen. Alternatief is een tekstvak op je formulier zetten, en daarvan het veld koppelen via de <Eigenschappen>, <Besturingselementbron>. Dan zie je dezelfde lijst met velden waar het berekeningsveld bij staat.
 
Ja, je hebt gelijk, ik was gewoon aan het kopieën en plakken vanuit de query naar het formulier via de opdracht tekstknop ab| en dat lukte nooit.
dank je voor uw moeite en uw raad
 
Kleine aanvulling nog: een formule als Overzichtmaand:Month(DateAdd("m";2;[Overlijdensdatum])) maakt in een query een veld aan met de naam Overzichtmaand. Heb je een tekstveld op een formulier en wil je daar een formule in zetten, dan mag er in die formule geen veldnaam staan. Een formule begint ook altijd met een = teken.
Dezelfde formule kan dus wel, maar ziet er dan zo uit: =Month(DateAdd("m";2;[Overlijdensdatum])). En die zet je dan in de eigenschap <Besturingselementbron> van dat tekstvak. Dan werkt het dus ook. De formule wordt dan 'live' berekend bij het bladeren door de records, en dat is één van de redenen dat ik het liever niet zo doe, omdat de berekeningen in de query al gemaakt zijn als het formulier wordt geopend, en het formulier daardoor merkbaar sneller werkt.
 
Laatst bewerkt:
beste,

ik deed dat maar met deze query Code:
= [Volgende verjaardag]-Date() krijg ik steeds de foutmelding #Naam?, uw andere codes deden het wel.
Code:
Dagen tot verjaardag: [Volgende verjaardag]-Date() werkt wel als query maar niet in mijn formulier!
Raar hè?
met vriendelijke groeten
Marc
 
Voor [Dagen tot verjaardag] geldt hetzelfde: in deze vorm kan je de formule niet als Besturingselementbron gebruiken. Daarnaast geldt (en dat kan ook een foutmelding opleveren) dat alle velden die in de berekening gebruikt worden, natuurlijk wél op het formulier aanwezig moeten zijn. Als je een formule maakt met het veld [Volgende verjaardag] en dat veld staat niet op je formulier, krijg je ook een foutmelding ook al is de berekening an sich correct.
 
en toch blijf ik die foutmelding krijgen, de eerste twee, leeftijd, en volgende verjaardag doen het vanzelf maar de voor de dagen uit te rekenen naar de volgende verjaardag niet.
Ik doe, denk ik, met de drie codes, uit de queri in het formulier hetzelfde.
 
Dan wordt het tijd voor een voorbeeldje, want ik kan verder niks zinnigs hieraan toevoegen, anders dan herhalen dat bovenstaande codes gewoon werken in mijn databases :).
 
Je hebt een paar vreemde dingen gedaan in je tabellen. Zo vind ik in de tabellen de berekeningsformules in (sowieso verkeerde, want dit mag helemaal niet) tekstvelden staan, en dat gaat dus nooit werken. Bij het veld [Leeftijd] bijvoorbeeld had je dit als Notatie staan: "[Volgende verjaardag]-Date()". Maar dat is dus geen notatiewijze, maar een formule die in een query thuishoort. Sowieso horen de velden [Leeftijd], [volgende verjaardag] en [Dagen tot verjaardag] niet in een tabel thuis want het zijn berekeningen. En die worden dynamisch berekend en dus niet opgeslagen in een tabel.

En als je dat zo aanpast (Velden verwijderen) dan zul je zien dat je query prima rekent. Ook de berekeningen op je formulier doen het dan goed.
 
beste,

ik heb nog een andere vraag, bestaat er ergens bij veldeigenschappen een manier om de cursor steeds volledig rechts te laten starten?
Ik had bij invoermasker bv 99999 getypt zodatnmen maar 6 getallen kan zetten, maar als ik naar een nieuw record ga, wilt de cursor niet altijd automatisch naar rechts gaan.
 
Ik snap niet helemaal wat je bedoelt; zoals je het vraagt wil je dat de cursor achter in het veld gaat staan als je er in klikt. Maar wat je bedoelt lijkt iets anders, namelijk dat Access automatisch naar het volgende veld gaat als je 6 tekens hebt ingevoerd. Dat laatste is lastig; daarvoor moet je op de <Tab> toets drukken. Een programma als dBase kon het overigens wel :D.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan