15. december 2009 - 18:45Der 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.
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)
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;
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..
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);
Synes godt om
Ny brugerNybegynder
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.