Avatar billede wmtoole Nybegynder
04. november 2003 - 10:28 Der er 14 kommentarer og
1 løsning

At udlede alder i år fra et cpr nr i formatet tekst

Jeg har en database med et felt som indeholder cpr numre (alle 10 cifre i formatet: 113322-1134).
Jeg har behov for at finde alle personer som fx er lig med og over 50 år gamle.
Hvordan løser jeg problemet i en forespørgsel?
Avatar billede dk_akj Nybegynder
04. november 2003 - 10:40 #1
select cpr,cint(right(left(cpr,len(cpr) - 5),2)) as birthyear  from cpr where cint(right(left(cpr,len(cpr) - 5),2)) < 50

tabelnavn er cpr og feltnavn indeholdende cprnummer er ligeledes cpr

//akj
Avatar billede terry Ekspert
04. november 2003 - 10:58 #2
SELECT tblCprNumber.*
FROM tblCprNumber
WHERE (((DateAdd("yyyy",50,CDate(Mid([CPR],1,2) & "/" & Mid([CPR],3,2) & "/" & Mid([CPR],5,2))))<Date()+1));
Avatar billede terry Ekspert
04. november 2003 - 11:04 #3
I can see that the solution I gave doesnt always works!
Avatar billede hnteknik Novice
04. november 2003 - 11:29 #4
Jeg har kørt med denne i mange år

Select person where
Int((Now()-DateValue(Mid([LØNFIL].[Cprnr],1,2) & "-" & Mid([LØNFIL].[Cprnr],3,2) & "-19" & Mid([LØNFIL].[Cprnr],5,2)))/365.25)))>=50

Henrik
Avatar billede terry Ekspert
04. november 2003 - 12:02 #5
SELECT tblCprNumber.*, tblCprNumber.CPR, CDate(IIf(CDate(Mid([CPR],1,2) & "/" & Mid([CPR],3,2) & "/" & Mid([CPR],5,2))<=Date(),CDate(Mid([CPR],1,2) & "/" & Mid([CPR],3,2) & "/" & Mid([CPR],5,2)),DateAdd("yyyy",-100,CDate(Mid([CPR],1,2) & "/" & Mid([CPR],3,2) & "/" & Mid([CPR],5,2))))) AS Dt
FROM tblCprNumber
WHERE (((CDate(IIf(CDate(Mid([CPR],1,2) & "/" & Mid([CPR],3,2) & "/" & Mid([CPR],5,2))<=Date(),CDate(Mid([CPR],1,2) & "/" & Mid([CPR],3,2) & "/" & Mid([CPR],5,2)),DateAdd("yyyy",-100,CDate(Mid([CPR],1,2) & "/" & Mid([CPR],3,2) & "/" & Mid([CPR],5,2))))))<=DateAdd("yyyy",-50,Date())));
Avatar billede terry Ekspert
04. november 2003 - 12:11 #6
bit of a mouth full but it seems to work
Avatar billede wmtoole Nybegynder
04. november 2003 - 17:26 #7
Hej terry
Din kode fungerer perfekt - jeg er dybt imponeret - jeg ville ALDRIG kunne have skrevet en queri af denh type så du fortjener absolut pointene.

Jeg siger også tak til dk aki og hnteknik MEN jeg har ikke kunnet få jeres forslag til at virke!
Avatar billede wmtoole Nybegynder
04. november 2003 - 17:28 #8
Hej igen terry
Jeg opretter lige et nyt spørgsmål idet jeg har brug for en forbedring. Jeg håber du kan hjælpe mig med den også.
(I andre må naturligvis også gerne prøve)
Avatar billede hnteknik Novice
04. november 2003 - 17:44 #9
Hm - nu har det ellers virket de sidste 7 år og virker stadig
Avatar billede terry Ekspert
04. november 2003 - 18:20 #10
hnteknik>Your solution does work to some extent, but not as it is.

This works

Select * FROM person where
Int((Now()-DateValue(Mid([Cprnr],1,2) & "-" & Mid([Cprnr],3,2) & "-19" & Mid([Cprnr],5,2)))/365.25)))>=50

OR
Select person FROM ([LØNFIL] where
Int((Now()-DateValue(Mid([LØNFIL].[Cprnr],1,2) & "-" & Mid([LØNFIL].[Cprnr],3,2) & "-19" & Mid([LØNFIL].[Cprnr],5,2)))/365.25)))>=50

but not as is!
Avatar billede terry Ekspert
04. november 2003 - 18:24 #11
I must also say that your solution (when modified) is a little more elegant than mine. I'm a little unsure that dividing by 365.25 will always give the correct result, but then I am sure you have tested it.
Avatar billede hnteknik Novice
04. november 2003 - 19:00 #12
>>terry
This is not a nursery. One is supposed to modify the code to some extend to ones personal needs. I don't have the time you obviously spend on servicing other users. My believe is, that you in several cases actually do them a 'bjørnetjenste', because your way they probably never learn.

The above has been tested on up to 4000 CPRNRs and you can check that the year actually is swicthing on their 'fødselsdag' on a daily basis.

Good Night - I need my beauty sleep - because tomorrow is it my birthday - so says my CPRNR check.
Avatar billede terry Ekspert
04. november 2003 - 19:17 #13
You dont need to get on my back hnteknik :o)

I can only answer for myslef, I have no idea if wmtoole is able to modify your code so that it works, vel?

I dont care on how many CPR numbers you have tested your code on, as it is here it deosnt work! and if you hadnt moaned so much I would have given you the points as it is now you can go to your bed and sulk without them :o)

Good night, and a happy birthday tomorrow :o)
Avatar billede hnteknik Novice
06. november 2003 - 08:51 #14
hey Terry - I'm not on your back ;-)
I just admire you for the time you spend over and over again on peoples posed problems, which often can be found searching this site in split seconds.

As you probably already know, I don't go for your or others points, so don't hit me with your evil spell - sourcer - I cought a bad cold yesterday evening so back to bed :-~) Thanks anyway
Avatar billede terry Ekspert
06. november 2003 - 20:03 #15
sorry to hear that, hope you get well soon.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester