leeftijd berekenen

Status
Niet open voor verdere reacties.

ManuelBeauson

Gebruiker
Lid geworden
11 dec 2014
Berichten
146
Ik ben gestart aan een database voor spelers . In de opmaak van de tabel heb ik een veld met leeftijd en een veld met geboortedatum, het veld geboortedatum wordt ingevuld. Op basis van dit veld zou ik het veld leeftijd automatisch willen ingevuld zien , in de validatieregel van het veld leeftijd heb ik volgende ingegeven maar krijg steeds een foutmelding .

ateDiff("yyyy";[Geboortedatum];Date();2;2)+(Format(Date();"mmdd")<Format([Geboortedatum];"mmdd"))

Krijg de foutmelding dat ongeldige SQL Syntaxtis

Wat doe ik verkeerd
 
In de opmaak van de tabel heb ik een veld met leeftijd en een veld met geboortedatum, het veld geboortedatum wordt ingevuld.
De eerste, enige en derhalve ook belangrijkste vraag is natuurlijk: WHY?? Nergens voor nodig; je gebruikt nota bene al de formule waarmee je de leeftijd in een query perfect kunt berekenen. Gegevens dubbel opslaan is een grote NONO in databases, en zeker als het om dit soort variabele gegevens gaat. Leeftijd verandert immers met enige regelmaat (mijn gok: jaarlijks :) )
 
oke, duidelijk. WHY . het gaat over een bestand , nog gemaakt in excel die ik wil importeren in acces van meer dan 400 jeugdspelers. Elk jaar moet ik lijsten maken van de nieuwe teams. Dus de speler van vorig seizoen die u 7 speelde overzetten naar de u 8 ploeg van volgend seizoen. Dit is een vrij slopend werkje en had dit graag vereenvoudigd gezien in acces.
In Belgie zijn teams ingevuld per leeftijd , van U6 tot en met U 17 , de U staat voor Under , dus een speler van U11 is van onder de 11 jaar en is geboren in 2005 .

Misschien beter om dan een tabel te maken met alle teams U6 - U7 - U8 -.......... met daaraan dan het geboortejaar ipv leeftijd
 
Ik zie het probleem nog steeds niet. Je kunt, als je teams wilt indelen op leeftijd, een selectie maken van spelers die een bepaalde leeftijd hebben. Dat doe je dus in je query. Daaruit rolt dat een bepaalde speler nu 14 jaar is. Bij het indelen valt die dan in de huidige competitie in U14, als ik je getallen goed interpreteer. De gegevens van vorige jaargangen importeer je, zeg je. Daarbij weet je dus al in welk jaar een bepaalde teamindeling zit. Dat jaar gebruik je om de toenmalige leeftijd van de speler te berekenen. Je trekt gewoon de jaartallen van elkaar af. Dus als Jantje van 14 in de jaargang 2014/2015 ook in een elftal speelde, was hij op dat moment 2016-2014=2 = U14-2 = U12. Maar dat hoef je m.i. toch allemaal niet te weten? Je importeert teams met een jaargang en een spelersID. Logisch dat in U12 alleen spelers van 12 en jonger zitten. Als je bestand genormaliseerd is, maakt dat helemaal niks uit. Hooguit dus als je wilt checken of een speler in de goede groep zat. Dan heb je de berekening van hierboven nodig om de klasse te weten die hij/zij voor dat jaar zou moeten hebben.
 
Maak ik hiervoor een query met de formule die ik geplaatst heb of hoe ga ik te werk. Ben geen expert in acces, eerder een beginneling, daarom ook de vraag.

Ik heb nu een tabel met vermelding van alle persoonlijke gegevens van de spelers in verwerkt, dit gaat over naam , voornaam,geboortedatum, woonplaats, tel nummer, email adressen, enz . de hele mikmak van gegevens.
Nu wil ik een nieuwe tabel aanmaken met de medische gegevens of zou ik deze gegevens ook verwerken bij de persoonlijke gegevens en geen extra tabel maken.

Alvast bedankt,
 
Medische gegevens? Mag je die opslaan? En/of mag iedereen die inzien? Daar heb hopelijk over nagedacht :).
Wat betreft aparte tabel of niet: dat hangt er vanaf wat je precies wilt zien. Wil je een historie opbouwen, dan moet je wel een aparte tabel gebruiken. Gaat het alleen om de huidige situatie, dan volstaat het aanpassen van je persoonstabel.
 
Maar hoe kan ik nu het best te werk om niet elk seizoen met copy / past alle spelers over te zetten naar hun nieuwe team. Ik zou een manier willen ontwikkelen dat ik op basis van geboortedatum rapporten kan maken waarin alle spelers dan te voorschijn komen.
Voorbeeld : geboortedatum 01/01/2005 - 31/12/2005 = U12 . Dit voor alle leeftijden.
Maak ik een tabel met daarin een veld geboortedatum en een veld U12 , of hoe ga ik het best te werk
 
Goedenavond,

Volgens mij kun je het beste een extra tabel maken met de bijv. de velden "Leeftijd" en "Groep".
Dan maak je een query op basis van de spelergegevens met daarin een extra veld waarmee je de leeftijd in een willekeurig jaar kunt bepalen.

Ik heb even een voorbeeldje gemaakt. De query heb ik qrySpelers genoemd.
Hier de SQL van de eerste query:

Code:
SELECT tbl_Spelers.ID_Naam, tbl_Spelers.Voornaam, tbl_Spelers.Achternaam, tbl_Spelers.Gebdatum, [Peiljaar?]-Year([Gebdatum]) AS Leeftijd
FROM tbl_Spelers;

De tweede query waar het uiteindelijk om gaat:

Code:
SELECT qrySpelers. Voornaam, qrySpelers. Achternaam, qrySpelers. Gebdatum, tbl_elftal.Groep
FROM qrySpelers INNER JOIN tbl_elftal ON qrySpelers.Leeftijd = tbl_elftal.Leeftijd;

De extra tabel heb ik tbl_elftal genoemd en deze is gekoppeld met het veld "Leeftijd" aan de veld "Leeftijd" in de query qrySpelers.

Als je de tweede query start dan verschijnt er een vraag: Peiljaar? Hier vul je het jaar in waarmee je aan de slag wilt: bijv. 2016
Ik denk dat het zo zou moeten werken.

Succes

Gr. Jan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan