Avatar billede lpj Nybegynder
06. december 2001 - 13:39 Der er 16 kommentarer og
4 løsninger

Udregning af dage mellem to datoer

Hej med jer
Jeg er ved at oprette et kundekartotek på et kursusophold.
Der har jeg en startdato og en slut dato, jeg vil spørge om man kan lave et eller andet så programmet automatisk udregner hvor mange dage der er imellem de to datoer. Det ville også være dejligt om prisen kunne ganges ind i. Lyder det indviklet, ja jeg kan se løsningen nogen steder i min lille bog om access for nybegyndere.
Hilsen Lotte
Avatar billede lpj Nybegynder
06. december 2001 - 13:40 #1
der skal selvfølge stå IKKE se løsningen nogen steder.
Hilsen Lotte
06. december 2001 - 13:41 #2
Public Function Alder2(Dato1 As Date, Dato2 As Date) As Integer
    \'alder mellem 2 datoer
    If DateSerial(Year(Dato2), Day(Dato1), Month(Dato1)) > Date Then
        Alder2 = DateDiff(\"yyyy\", Dato1, Dato2) - 1
    Else
        Alder2 = DateDiff(\"yyyy\", Dato1, Dato2)
    End If
End Function
Avatar billede proaccess Nybegynder
06. december 2001 - 13:44 #3
Kan man ikke bare bruge dette i en forespørgsel:

=DateDiff(\"d\"; Dato1; Dato2) - 1
06. december 2001 - 13:45 #4
Sorry, denne funktion beregner antal år mellem 2 datoer...duer nok ikke i dit tilfælde ;o)

I stedet kan du f.eks. i en tekstboks skrive:
=Datediff(\"d\"; [Slutdato];[Startdato])

Hvis du vil gange en pris på, hedder den bare:
=Datediff(\"d\"; [Slutdato];[Startdato])*[Dagspris]
06. december 2001 - 13:47 #5
ProAccess...jo selvfølgelig ;o)

Længe siden, at man har hørt noget fra dig? Eller er det bare fordi jeg ikke har været så aktiv på det seneste?
Avatar billede lpj Nybegynder
06. december 2001 - 13:49 #6
Hej igen
Lige et tumpe spørgsmål
Jeg skal da sætte dette ind i en forespøgsel ikke????
06. december 2001 - 13:51 #7
Det kan du også gøre.
Derved skal feltet f.eks. se således ud:

Pris: Datediff(\"d\"; [Startdato];[Slutdato])+1*[Dagspris]
06. december 2001 - 13:52 #8
En lille rettelse:
Pris: (Datediff(\"d\"; [Startdato];[Slutdato])+1)*[Dagspris]
Avatar billede proaccess Nybegynder
06. december 2001 - 14:11 #9
>Thomas: Jo, jeg er hér skam endnu... Der er dog også en del arbejde (af den kedelige slags som \"heldigvis\" giver løn), som skal klares ;-(
Avatar billede greybeard Nybegynder
06. december 2001 - 15:55 #10
Lav en forespørgsel med dette indhold;
SELECT Dato.Dato1, Dato.Dato2, [dato2]-[Dato1]+1 AS AntalDage, Dato.DagsPris, [AntalDAge]*[Dagspris] AS SamletPris
FROM Dato;
Hvor din tabel hedder Dato og indeholder felterne Dato1, Dato2 og Dagspris
Avatar billede jesperthomsen Nybegynder
06. december 2001 - 16:36 #11
Man kan lave en lidt mindre stueren men mere effektiv beregning ved i stedet at bruge:

AntalDage = (Fix([SlutDato]) - Fix([StartDato])) + 1

Det er naturligvis afhængigt af at formatet for dato-typen ikke ændrer sig, men sandsynligheden er ringe.

Avatar billede terry Ekspert
07. december 2001 - 11:26 #12
lpj>If your not sure how to do this then I could take a look at the problem for you!
dkTeBrSa@Europe.lego.com
Avatar billede lpj Nybegynder
10. december 2001 - 12:37 #13
Hej
Mange tak for hjælpen, jeg ved ikke hvem der skal have point for der er ikke nogen af jer der har helt ret, eller også er det mig, der gør det forkert, for jeg blev ved med at få fejl, men opdagede at hvis jeg skrev:
udtryk1 start-stop, så regnede den dagene ud
og derefter
udtryk1* dagspris
så giver det den korrekte pris
Jeg ved ikke om det er rigtigt eller om der opstår fejl senere.
Men hvem der skal have point ja det kan jeg ikke regne ud, men skriv og vi finder ud af det. Det kunne jo også være at I kan fortælle mig hvad der gik galt når jeg prøvede jeres forslag. (Jeg kan jo altid blive lidt klogere
Hilsen Lotte
10. december 2001 - 12:40 #14
Det skyldes at du ikke f.eks. skrev
Antaldage:(Datediff(\"d\"; [Startdato];[Slutdato])+1)

Hvis du blot skrev
(Datediff(\"d\"; [Startdato];[Slutdato])+1)
vil Access delv skrive Udtryk1 foran (og det bliver så kolonnenavnet)

mvh
Thomas
10. december 2001 - 12:41 #15
delv = selv
Avatar billede jesperthomsen Nybegynder
10. december 2001 - 12:42 #16
Hej Lotte
Jeg er ikke så hooked på pointene, så giv dem bare til hvem du nu synes. Men vær lidt varsom med din metode; den vil kun virke hvis der er tale om hele dage. Hvis et kursus strækker sig fra klokken ni den ene dag til kl. 12 den næste får du ikke 2 ud af det med din udregning.
Datoer i Access er flydende tal. Heltalsdelen er antal dage siden en bestemt dato, så vidt jeg husker 1/1-1850 mens decimaldelen er udtryk for hvor stor en del af døgnet der er gået. 0,5 vil altså være kl. 12. Derfor vil det altså fungere fint at trække to datoer fra hinanden, så længe tidspunktet på de to datoer er ens.
10. december 2001 - 12:52 #17
Lotte,

Hvis du er i tvivl om hvem, som skal have hvormange point, mener jeg at Proaccess skal have flest, da han først kom med et (næsten korrket) svar. Hans beregning regnede dog 2 dage forkert, hvilket undertegnede og de 2 andre fik rettet op på.
Så mit umiddelbare objektive bud er at ProAccess skal have 200 og vi andre 100 point. Eller også skal vi alle have lige mange point.

/Thomas
Avatar billede lpj Nybegynder
10. december 2001 - 13:03 #18
Hej med jer
Da alle have svaret \"rigtigt\" og \"forkert\" vælger jeg at give alle lige mange point.
Endnu engang tak for hjælpen
Hilsen Lotte
Avatar billede proaccess Nybegynder
10. december 2001 - 13:28 #19
Det er helt i orden med mig ;-)

Husk Jesper\'s kommentar om tider 10/12 2001 12:42:01, det kan være du kommer til at tage dette i betragtning på et senere tidspunkt...
Avatar billede greybeard Nybegynder
10. december 2001 - 14:54 #20
Mange tak.
Ingen af os er vist blevet snydt:-)
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