Avatar billede ferdinand.k Mester
27. juni 2003 - 11:41 Der er 7 kommentarer og
1 løsning

udregning af dage

her kommer en udregning jeg ikke lige kan finde ud af, uden at skulle bruge for meget tid herpå:

Jeg har en række kunder der skal have en faktura udsendt for en halv periode. Dvs. at kunden f.eks har været knyttet servicen fra 10/2-2003 til perioden afsluttes d. 14/2-2003. Derved skal kunden have en faktura for de 4 dage. mit problem består ikke i at sige dag1-dag2=dage, men nærmere at finde ud af hvormange arbejdsdage der er imellem de to dage.
Jeg har svært at se skoven for bare træer, så skriv endelig hvis der mangler noget....
27. juni 2003 - 11:51 #1
Hvis tabellen skal tage højde for helligdage, så skal du lave en tabel med kun én kolonne, som du kalder Dato (af datatypen Dato). Tabellen kalder du "Helligdage"

Herefter lægger du disse 2 funktioner ind i et modul:
Public Function Arbejdsdag(Dato As Date) As Boolean
    If Weekday(Dato) = 7 Or Weekday(Dato) = 1 Then
        Arbejdsdag = False
    ElseIf DCount("*", "Helligdage", "Dato = #" & Format(Dato, "yyyy-mm-dd") & "#") > 0 Then
        Arbejdsdag = False
    Else
        Arbejdsdag = True
    End If
End Function

Public Function FindAntalArbejdsdage(Startdato As Date, Slutdato As Date) As Long
    Dim tmpDato As Date
    Dim n As Integer
    tmpDato = Startdato
    Do Until tmpDato >= Slutdato
        If Arbejdsdag(tmpDato) Then
            n = n + 1
        End If
        tmpDato = tmpDato + 1
    Loop
    FindAntalArbejdsdage = n
End Function

Herefter kan du finde antal arbejdsdage mellem 2 datoer (f.eks. i en forespørgsel) ved at kalde:
FindAntalArbejdsdage(Dato1, Dato2)

/Thomas
Avatar billede terry Ekspert
27. juni 2003 - 12:02 #2
what about holidays?
Avatar billede terry Ekspert
27. juni 2003 - 12:13 #3
OK, I see you have a "holiday" table there Thomas :o)
Avatar billede ferdinand.k Mester
27. juni 2003 - 16:02 #4
så er jeg tilbage.. hvordan kan den regne ud hvormange dage der imellem to datoer, i en tom tabel? skal jeg ikke importere en røvfuld i de tabeller, eller hvordan?
27. juni 2003 - 16:19 #5
Du laver bare en forespørgesel baseret på din tabel. I denne laver du en ny kolonne, som ser således ud:
Forskel: FindAntalArbejdsdage([Dato1], Dato2])
Avatar billede ferdinand.k Mester
27. juni 2003 - 16:20 #6
det har naturligvis gjort, og her kommer den ud med en tom record...?!
27. juni 2003 - 19:34 #7
hmm, det virker på min!?

hvad sker der, hvis du trykker Ctrl+G og taster:
?FindAntalArbejdsdage(#1-1-2003#, Date)
(Efterfulgt af ENTER)?
Avatar billede ferdinand.k Mester
30. juni 2003 - 07:42 #8
det har du sgu ret i, dog kan jeg ikke få noget ud af en forespørgelse, men det er ikke noget problem at få det korrekt ud gennem immediate-panelet. Men mon ikke det bare er en fejl 40?! :) Tak for hjælpen mester...
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