[Access] Rekenen met werkdagen

Pagina: 1
Acties:
  • 120 views sinds 30-01-2008
  • Reageer

  • ArjanC
  • Registratie: Juli 2001
  • Laatst online: 15-09 11:36
ik probeer de ziekte dagen bij te houden met access, maar nu wil ik reken met die datums, nu heb ik op het internet een lappie code gevonden maar hert werkt niet :)

<code>
Private Sub txtTotaldays_AfterUpdate()

Function work_days(BegDate As Variant, EndDate As Variant) As Integer

' Note that this function does not account for holidays.

Dim WholeWeeks As Variant
Dim DateCnt As Variant
Dim EndDays As Integer

BegDate = DateValue(Me.Date_sick)

EndDate = DateValue(Me.Date_better)
WholeWeeks = DateDiff("w", BegDate, EndDate)
DateCnt = DateAdd("ww", WholeWeeks, BegDate)
EndDays = 0
Do While DateCnt < EndDate
If Format(DateCnt, "ddd") <> "Sun" And _
Format(DateCnt, "ddd") <> "Sat" Then
EndDays = EndDays + 1
End If
DateCnt = DateAdd("d", 1, DateCnt)
Loop
work_days = WholeWeeks * 5 + EndDays
End Function

</code>

waarvan date_sick en date_better waardes zijn die hij uit het formulier haalt..

  • El_BingO
  • Registratie: Juli 2001
  • Laatst online: 26-08 12:01
Op maandag 10 december 2001 16:05 schreef burp2001 het volgende:
ik probeer de ziekte dagen bij te houden met access, maar nu wil ik reken met die datums, nu heb ik op het internet een lappie code gevonden maar hert werkt niet :)
Kan je ook zeggen wat dat hert dan precies fout doet?

  • ArjanC
  • Registratie: Juli 2001
  • Laatst online: 15-09 11:36
Hij doet niks
ook geen error, snap hier niet meer..

  • Boss
  • Registratie: September 1999
  • Laatst online: 21:44

Boss

+1 Overgewaardeerd

met de functie datediff moet je een heel eind komen, denk ik...

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • mauriceb
  • Registratie: Maart 2001
  • Laatst online: 24-08 23:23
Mag ik eerlijk zijn? Ik zeg het toch :)

Er klopte maar weinig van! Ik heb het eea aangepast en kwam tot deze oplossing:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private Sub Date_better_AfterUpdate()

' Note that this function does not account for holidays.

Dim WholeWeeks As Variant
Dim DateCnt As Variant
Dim EndDays As Integer
Dim BegDate As Variant
Dim EndDate As Variant

BegDate = DateValue(Me.Date_sick)
EndDate = DateValue(Me.Date_better)

WholeWeeks = DateDiff("w", BegDate, EndDate)
DateCnt = DateAdd("ww", WholeWeeks, BegDate)
EndDays = 0

Do While DateCnt < EndDate
  If Format(DateCnt, "ddd") <> "Sun" And _
    Format(DateCnt, "ddd") <> "Sat" Then
    EndDays = EndDays + 1
  End If
  DateCnt = DateAdd("d", 1, DateCnt)
Loop
  
Work_days = WholeWeeks * 5 + EndDays

End Sub

Ervan uitgaande dat het formulier de volgende velden heeft:
code:
1
2
3
Date_sick    Invoerveld
Date_better  Invoerveld
Work_days    Uitvoerveld van het programma

Na het invoeren van de datum in het veld Date_Better wordt de berekening uitgevoerd.

Ik zou nog ff een controle inbouwen of de velden niet leeg zijn anders gaat het alsnog mis.

Veel plezier ermee.

Verwijderd

<?
Pagina: 1