Avatar billede effo Nybegynder
15. januar 2004 - 20:29 Der er 5 kommentarer og
1 løsning

Networkingdays i Access97

Hej eksperter,

Jeg har en forespørgsel der skal vise et antal arbejdsdage mellem 2 datofelter. Modtaget_dag og Afsendt_dag

Altså... Trække lørdage, søndage og evt. helligdage fra.

Kan det laves i expression builder eller som modul?
Avatar billede eagleeye Praktikant
15. januar 2004 - 20:34 #1
Du skal prøve at tage et kig på dette kode:

http://www.mvps.org/access/datetime/date0012.htm
Avatar billede eagleeye Praktikant
15. januar 2004 - 20:38 #2
Der er en funktion iblandt dem som hedder dhCountWorkdaysA som kan tælle antal arbejdes dage minus weekend og helligdage.

Public Function dhCountWorkdaysA(ByVal dtmStart As Date, ByVal dtmEnd As Date, _
Optional adtmDates As Variant = Empty) _
As Integer

    ' Count the business days (not counting weekends/holidays) in
    ' a given date range.
15. januar 2004 - 22:22 #3
Hvis du laver en tabel kaldet "Helligdage" med kun en kolonne. Denne kolonne skal hedde "Dato" og være af datatypen Dato/Tid

Herefter indsætter du disse 2 funktioner 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 arbejdedage ved at spørge f.eks.:
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
FindAntalArbejdsdage(Dato1;Dato2)

/Thomas
15. januar 2004 - 22:23 #4
sorry....fik åbenbart indsat koden 2 gange. Her kommer indlægget igen:

Hvis du laver en tabel kaldet "Helligdage" med kun en kolonne. Denne kolonne skal hedde "Dato" og være af datatypen Dato/Tid

Herefter indsætter du disse 2 funktioner 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 arbejdedage ved at spørge f.eks.:
FindAntalArbejdsdage(Dato1;Dato2)

/Thomas
Avatar billede effo Nybegynder
16. januar 2004 - 19:19 #5
Skal bede eagleeye om at angive svar, idet dette løste problemet. Men også tak til Thomas for indsatsen. :o)
Avatar billede eagleeye Praktikant
17. januar 2004 - 01:36 #6
Ok her et svar fra mig ;)
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