Avatar billede -anders- Juniormester
01. december 2004 - 12:32 Der er 12 kommentarer og
1 løsning

beregne en persons alder næste år

Hej Eksperter:
I en forspørgsel har jeg et datofelt "Født" i samme forspørgsel har jeg et beregnet felt "Alder" dette felt viser persones alder ved at kalde nedenstående funktion direkte i forspørgsel:

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

Dette ser ud til at virke, da den returneret alder passer. Spørgsmålet/opgaven er nu:

Kan man i en inputboks eller en popup form indtaste feks. årstallet 2005, klikke på Ok, og derefter få vist de personer der i det indtastet årstal fylder 55,60,65,70,75,80,85,90,95,100, og kun dem.

mvh Anders.
Avatar billede overchord Nybegynder
01. december 2004 - 12:39 #1
Ja du behoever ikke at bruge datediff hvis du kigger paa hele aaret istedet

Aarstal = inputbox("indtast aar")
NyAlder = 2005 - datepart("yyyy", Foedt)

For at finde dem som har rund eller halvrund foedselsdag kan du saa bruge
Nyalder Mod 5 = 0
Avatar billede -anders- Juniormester
01. december 2004 - 12:43 #2
hej overchord, tak for indlægget det lyder som det er noget jeg måske kan bruge, kunne du gå lidt mere i detaljer, er ikke så skrap til det :)
01. december 2004 - 12:44 #3
Hatten af for dig, overchord!
Jeg var ellers i gang med den helt store VB-funktion på 1800 linier kode og 87 forespørgler. Men dette er jo simpelt og genialt :o)
Avatar billede overchord Nybegynder
01. december 2004 - 12:54 #4
hehe takker Thomas men der skal nok lige lidt mere koed paa som aandersen siger.

aandersen -> Kan du give et eksempel paa hvordan det skal bruges? Der er to ting som er vigtige:
1) Slaar du en enkelt post op at gangen eller skal du loebe igennem en hel tabel?
2) Skal du returnre svaret paa hvilket rund eller halvrund alder eller blot at det ER er en saadan alder?
Avatar billede overchord Nybegynder
01. december 2004 - 13:21 #5
ok jeg har lavet et hurtigt eksempel hvor det er bygget ind i en forespoergsel. Jeg kan sende dig databasen hvis du gerne vil have det.

Alternativt er loesning:
1. Opret en forumlar med en texbox til indtastning af Aarstallet. Jeg kalder denne AAR.
2. Opret en ny forespoergsel og smid flg i SQL visningen:
SELECT Table1.Navn, Table1.Fdag, Forms!Form1!AAR-DatePart("yyyy",Table1!Fdag) AS Fylder
FROM Table1
WHERE (((([Forms]![Form1]![AAR]-DatePart("yyyy",[Table1]![Fdag])) Mod 5)=0));

3. Du skal have en knap paa Form1 som aabner denne forespoergsel idet det kun virker naar Form1 er aabnet og et tal er indtastet.
Avatar billede -anders- Juniormester
01. december 2004 - 13:41 #6
overchord> et lille eks. på hvordan det bruges: jeg har en forspørgsel "fsfødselsdage"i denne foresopørgsel indehoder så alle relevante felter for alle medlemmer i databasen fornavn,efter, adresse, født, e.t.c. Meningen var så at man skulle promtes for et årstal når forespørgsel åbnes, når et årstal så er tastet åbnes forspørgsel og de poster som beskrevet i spørgsmålet vises
Avatar billede -anders- Juniormester
01. december 2004 - 13:57 #7
Jeg var egenlig lidt lun :)på en vba løsning, selvom jeg dog sikker på at det sidste indlæg fra overchord godt kunne virke
01. december 2004 - 14:10 #8
ja ja, det skriver du kun, fordi du vil have, at jeg skal kaste mig over de 1800 linier kode igen ;o)
Avatar billede overchord Nybegynder
01. december 2004 - 14:15 #9
Det eneste VBA du umiddeltbart vil have brug for er inde paa formularen hvor du indtaster aarstallet. Du skal have en knap som aabner forespoergslen (kan ogsaa goeres vha en makro istedet).
Grunden til at jeg foretraekker at lave den i SQL'en fremfor at lave funktioner er at du under alle omstaendigheder skal bruge dataen fra det felt i formularen, hvorfor det er ligesaa nemt at smide det direkte ind fremfor at skulle gaa igennem to funktioner.

Hvis du absolut vil bruge funktioner kan du lave det som to funktioner du kan bruge i et foresporgsel istdet:

public Funktion InkluderAlder (Aarstal as integer, Foedt as Date) as Boolen
dim Nylader as integer
Nyalder = Aarstal - DatePart("yyyy", Foedt)
if Nylader Mod 5 = 0 then
  InkluderAlder = True
else
  IknluderAlder = False
end if
end function
og

public Function BeregnAlder (Aarstal as integer, Foedt as Date) as Integer

BeregnAlder = Aarstal - DatePart("yyyy", Foedt)

end function

Herefter kan du saa referere til disse funktioner i din forespoergsel
SELECT Tabel.fornavn, Tabel.Efternavn, Tabel.Adresse, BeregnAlder([Forms]![DinFormular]![Aar], [Tabel]![Foedt]) FROM Tabel WHERE InkluderAlder(Forms]![DinFormular]![Aar], [Tabel]![Foedt]) = True;
Avatar billede -anders- Juniormester
01. december 2004 - 14:33 #10
hej overchord, så var den der, det var lige det jeg var på udkik efter, mange tak for hjælpen, points er på vej til dig.

:)Anders.
Avatar billede -anders- Juniormester
01. december 2004 - 17:05 #11
>Thomas,bestemt ikke, men jeg har jo pt. aldrig modtaget noget fra dig i dette forum som ikke har virket perfekt, så var det endt med 1800 linjer havede det såmænd være fint nok med mig, men selvfølgelig en masse slid for dig :o). En lidt anden snak på din hjemmeside opfordre du til at brugere specielt på mit niveu kan komme med forslag til fremtidige downloads, det ville være fantatisk med et eks. på generelle datofunktioner, søger man her på E er der mange rigtig mange indlæg omkring dette emne, men blot et forslag. :o)

mvh Anders.
01. december 2004 - 18:50 #12
Hej Anders,

jeg er nu glad for at slippe for de 1800 liniers kode ;o)

Men ideen med en grundig gennemgang af dato-behandling vil måske være en god idé - det vil jeg overveje :o)
Avatar billede overchord Nybegynder
02. december 2004 - 10:46 #13
aandersen -> Godt at du kunne brug den med stavefejl og taste-spader og hele molevitten :-) Jeg maa virkeligt laere at laese igennem mine poster foer jeg sender dem.
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