Avatar billede borup110 Nybegynder
15. december 2009 - 18:45 Der er 13 kommentarer og
1 løsning

Beregn alder

Hej

I min Db har jeg et felt Fødseldag i Datoform 01-01-2010

I et modul har jeg lavet følgende.

Public Function Alderberegning(Dato As Date) As Integer
If DateSerial(Year(Date), Month(Dato), Day(Dato)) > Date Then
Alderberegning = DateDiff("yyyy", Dato, Date) - 1
Else
Alderberegning = DateDiff("yyyy", Dato, Date)
End If
End Function

Modulet er døbt Alderberegning.

I en forespørgsel Har jeg oprettet følgende

Første Første kolonne er Felt = Fødselsdag

Anden kolonne  Under felt = Udtryk1 Alderberegning({Fødselsdag])

Det virker desværre ikke , er der nogle der kan hjælpe.
Avatar billede borup110 Nybegynder
15. december 2009 - 18:53 #1
Der var en lille fejl

Udtryk1 Alderberegning([Fødselsdag])
Avatar billede terry Ekspert
15. december 2009 - 19:18 #2
Udtryk1: Alderberegning([Fødselsdag])


Notice the : and [
Avatar billede terry Ekspert
15. december 2009 - 19:19 #3
You can also change Udtryk1 to

Alder:Alderberegning([Fødselsdag])
Avatar billede borup110 Nybegynder
15. december 2009 - 19:37 #4
Har gjort som du skrev prøvet begge.

Får en fejlmelding

Der er en ikke-defineret funtion "Alderberegning" i udtrykket
Avatar billede terry Ekspert
15. december 2009 - 19:46 #5
any chance of seeing the dB?

ekspertenATsanthell.dk
AT = @
Avatar billede terry Ekspert
15. december 2009 - 19:47 #6
you have saved the module with the function in?
Avatar billede borup110 Nybegynder
15. december 2009 - 19:59 #7
Sender den til dig
Avatar billede terry Ekspert
15. december 2009 - 20:08 #8
Problem isnt obvious but try renaming the module from Alderberegning to ModAlderberegning. Access isnt happy that the module and function have the same name :o)
Avatar billede borup110 Nybegynder
15. december 2009 - 20:15 #9
Det virker, kan det laves så jeg kan se alder i formularen Personoplysning ??
Avatar billede terry Ekspert
15. december 2009 - 20:32 #10
Yes.
You could put a label on the form and on the forms On Current event make some code to set the labels caption

Me.NameOfLabel.Caption = Alderberegning([Fødselsdag])
Avatar billede terry Ekspert
15. december 2009 - 20:49 #11
Something I noticed.

You need to alter the SQL in the record source for the form so that th erelated tables are JOINed with an OUTER JOIN. Otherwise youwont see anything until data also exists in the related tables.



SELECT PERSONOPLYSNING.Medarbejder_id, TITEL.Vognnr, TITEL.Vogn_Nr, PERSONOPLYSNING.Fornavn, PERSONOPLYSNING.Efternavn, PERSONOPLYSNING.Adresse, PERSONOPLYSNING.Husnummer, PERSONOPLYSNING.Postnr, postnr.By, TITEL.Vognmand, TITEL.Chauffør, TITEL.Afløser, PERSONOPLYSNING.Telefon, PERSONOPLYSNING.Email, PERSONOPLYSNING.Fødselsdag, PERSONOPLYSNING.Bank, PERSONOPLYSNING.Reg_Nr, PERSONOPLYSNING.Konto_Nr, PERSONOPLYSNING.Noter, KURSER.Førstehjælp, KURSER.Førstehjælp_Udløber, KURSER.Kvalifikationsbevis, KURSER.Vognmandskursus, KURSER.Førerkort, KURSER.Apv, KURSER.Chaufførkontrak, KURSER.Kørekortnr, KURSER.Kørekort_Udløber, TITEL.Medarbejder_id AS Medarbejder_id_TITEL, KURSER.Medarbejder_id AS Medarbejder_id_KURSER
FROM ((postnr RIGHT JOIN PERSONOPLYSNING ON postnr.Postnr = PERSONOPLYSNING.Postnr) LEFT JOIN KURSER ON PERSONOPLYSNING.Medarbejder_id = KURSER.Medarbejder_id) LEFT JOIN TITEL ON PERSONOPLYSNING.Medarbejder_id = TITEL.Medarbejder_id;
Avatar billede borup110 Nybegynder
15. december 2009 - 21:21 #12
Kan du lave det i min Db og så sende den retur, jeg lærer bedre ved at se det du har lavet.
Avatar billede Boenne65 Nybegynder
15. december 2009 - 21:51 #13
Udtryk1: Year(Date())-Year([fødselsdag])
 
Tager året fra datoen i dag, og trækker året fra datoen som du har i kollonnen fødselsdag..

men hvis du skal have dit modul til at blive kaldt skal du lave en funktion som kalder dit modul.. da (som jeg forstår det) funktionen du har lavet ligger i modulet..
Hvordan man lige kalder funktionen fra en forespørgsel ved jeg desværre ikke.. men ovennævnte virker i en forespørgsel..
Avatar billede hnteknik Novice
16. december 2009 - 11:11 #14
For mange år siden brugte jeg denne foresørgsel - aldersfordeling ud fra cprnr.

SELECT DISTINCTROW Int((Now()-DateValue(Mid([LØNFIL].[Cprnr],1,2) & "-" & Mid([LØNFIL].[Cprnr],3,2) & "-19" & Mid([LØNFIL].[Cprnr],5,2)))/365.25) AS ALDER, Count(Int((Now()-DateValue(Mid([LØNFIL].[Cprnr],1,2) & "-" & Mid([LØNFIL].[Cprnr],3,2) & "-19" & Mid([LØNFIL].[Cprnr],5,2)))/365.25)) AS Antal
FROM LØNFIL LEFT JOIN KONTORADR ON LØNFIL.Kontor = KONTORADR.Kontornr
WHERE (((LØNFIL.Titel)<>"vikar"))
GROUP BY Int((Now()-DateValue(Mid([LØNFIL].[Cprnr],1,2) & "-" & Mid([LØNFIL].[Cprnr],3,2) & "-19" & Mid([LØNFIL].[Cprnr],5,2)))/365.25)
HAVING (((Int((Now()-DateValue(Mid([LØNFIL].[Cprnr],1,2) & "-" & Mid([LØNFIL].[Cprnr],3,2) & "-19" & Mid([LØNFIL].[Cprnr],5,2)))/365.25))>=20 And (Int((Now()-DateValue(Mid([LØNFIL].[Cprnr],1,2) & "-" & Mid([LØNFIL].[Cprnr],3,2) & "-19" & Mid([LØNFIL].[Cprnr],5,2)))/365.25))<=65))
ORDER BY Int((Now()-DateValue(Mid([LØNFIL].[Cprnr],1,2) & "-" & Mid([LØNFIL].[Cprnr],3,2) & "-19" & Mid([LØNFIL].[Cprnr],5,2)))/365.25);
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