Avatar billede erf Nybegynder
22. juni 2009 - 11:45 Der er 11 kommentarer og
1 løsning

Datoberegning (igen)

Hej Eksperter

I en Access database har jeg et datofelt(Felt 1). Feltet er datoen for en gennemført uddannelse!

18 mdr. efter skal folkene efteruddannes.

jeg vil gerne have tillagt 18 mdr. til en dato, og placeret oplysningen i et andet felt (Felt 2).

Mvh
erf
Avatar billede stinejh1980 Nybegynder
22. juni 2009 - 11:59 #1
Nu ved jeg ikke helt i hvilken forbindelse du bruger denne access db, fordi hvis du skal bruge dette på din hjemmeside og skal hente koden frem vha vb og asp.net, så tror jeg du skulle du have valgt en andet sted at poste.

Her er lige lidt pseudokode i VB:

dim Mydate, myNowdate, strDays
MyDate=dato fra Access
Nowdate = date.now()
strDAys = NowDate - Mydate
If strDays > 18 måneder then
[Det der skal ske hvis der er gået mere end 18 måneder]
else
[hvis du ikke vil gøre noget specielt ved brugere der har mindre end 18 måneder undlader du dette]
end if
Avatar billede erf Nybegynder
22. juni 2009 - 12:35 #2
Det skal ikke bruges på en hjemmeside!

Det er nogle mennesker som skal på et tilbagevendende kursus/genopfriskningskursus.
med 18 mdr´s mellemrum.

Det drejer sig ikke om en NowDate. Det drejer sig om den dato brugeren skriver ind i Access databasen,  + 18 mdr.

Senere skal han søge denne dato, via en foresørgsel.
Avatar billede erf Nybegynder
22. juni 2009 - 12:39 #3
Jeg forestiller mig noget med: DateAdd("m",18,Felt 1"). Felt 1 er det felt hvor brugeren insdskiver en dato.
Avatar billede stinejh1980 Nybegynder
22. juni 2009 - 12:45 #4
Jeg tror ikke halt jeg er med på hvad det egentlig er du vil med dette.

1. Efter min opfattelse har du vel registreret den dato de her folk sidste var på kursus, korrekt?

2. Hvorfor vil du registrere denne dato + 18 mdr?

3. Hvad skal der ske hvis der er gået mindre en 18 mdr?

4. Hvad skal der ske hvis der er gået mere?
Avatar billede mugs Novice
22. juni 2009 - 13:17 #5
Jeg mener spørgsmåler et helt klart formuleret. Ganske rigtig kan du benytte DateAdd i en forespørgsel. Funktionen (Udtrykket) ser aåledes ud:

Udtryk1: DateAdd("m";18;[felt1])

Resukltatet gemmes ikke i tabellen, men vil altid gremgå af forespørgslen. Principielt er det forkert at gemme beregnede udtryk i en tabel, så længe de kan genberegnes i en forespørgsel.
Avatar billede erf Nybegynder
22. juni 2009 - 13:18 #6
Fordi, efter 18 mdr. skal de samme folk genindkaldes. Dette drejer sig om et sikkerhedskursus for brandvæsner!

De bliver først genindkaldt når der er gået min. 18 mdr.
Avatar billede stinejh1980 Nybegynder
22. juni 2009 - 13:27 #7
Jeg tror måske det er mig som ikke udtrykker mig korrekt.

Sceneario som jeg forestiller mig det:
- Brugeren sætter sig til computeren.
- Han åbner din Access og bruger den funktion du har lavet.
- Din funktion giver han en liste over de brandmænd hvor det er over 18 måneder siden de sidste var på kursus
  (fra den dato han anvender din funktion).
- Han bruger så denne liste til at sende brandmændene en en indkaldelse til genopfrisknings kursus?
Er dette korrekt?
Avatar billede mugs Novice
22. juni 2009 - 13:42 #8
Korrekt.

Den giver dig listen uanset hvor mange måneder det er siden de var på kursus.

Under Udtrykket kan du indsætte et kriterie således:

>=Date()-14

Hvor listen nu vil være begrænset til de poster (brandmænd) der skulle være indkaldt idag (Date()) og 14 dage bagud.
Avatar billede erf Nybegynder
22. juni 2009 - 13:45 #9
Hej Mugs

Undskyld, jeg så ikke din kommentar!

Jeg undrer mig lidt over dit svar.
Jeg har sådan set heller ikke brug for at gemme resultatet i en tabel.
Jeg har brug for at man løbende kan undersøge hvem der skal på genopfriskningskursus.
Her vil jeg så bare lave en almindelig forespørgsel.

Har nu indsat i [Felt 2]:  DateAdd("m";18;[Felt 1]).

Alle data forsvinder når jeg kører forspørgslen.

Hilsen
Erik
Avatar billede mugs Novice
22. juni 2009 - 14:04 #10
Glem alt om felt2 i denne forbindelse. Indsæt denne i en ny tom kolonne i din forespørgsel:

Udtryk1:DateAdd("m";18;[Felt 1])

den lægger simpelthen 18 mdr til den dato du har skrevet i Felt1. Deraf funktionsnavnet DateAdd.
Avatar billede erf Nybegynder
22. juni 2009 - 14:05 #11
Hej Mugs

Tusind tak. Du burde få en medalje, eller en fan-øl, hvis engang skulle mødes ude i byen

erf
Avatar billede mugs Novice
22. juni 2009 - 14:14 #12
En øl lyder fint i denne sommervarme. Afslut venligst spøtgsmålet.
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