Avatar billede overgreat Forsker
09. december 2012 - 23:01 Der er 8 kommentarer og
1 løsning

Felt i tabel der regner forskel mellem to datoer ud?!

Hej alle

Håber I kan hjælpe.

Jeg har brug for at vide om man kan lave følgende.

I min tabel har jeg lavet en start dato og en slutdato.

Kan access lave et regnestykke der hedder - hvor mange hverdage (også fratrukket helligdage) er der mellem de to datoer.

Dvs. man-fre ekskl. helligdage.

Håber I kan hjælpe mig.
Avatar billede hugopedersen Nybegynder
10. december 2012 - 06:48 #1
Der er en rimelig god artikel om dette
http://msdn.microsoft.com/en-us/library/office/dd327646%28v=office.12%29.aspx

Det korte svar er at det godt kan laves - men det er ikke bare lige.....
Avatar billede overgreat Forsker
10. december 2012 - 12:47 #2
Hej Hugo

Tak for artiklen, den er helt sikkert rette vej.

Jeg har lavet tabellerne og klippet VBA koden ind i VBA module...

Men den kommer ikke ud med regnestykket.

Hvad skal jeg gøre i workdays feltet for at den kommer frem til dagenene...?

Fanger ikke helt det de skriver om Datdiff mv.

NB:
Har klibbet disse to moduler ind:

Public Function Weekdays(ByRef startDate As Date, _
    ByRef endDate As Date _
    ) As Integer
    ' Returns the number of weekdays in the period from startDate
    ' to endDate inclusive. Returns -1 if an error occurs.
    ' If your weekend days do not include Saturday and Sunday and
    ' do not total two per week in number, this function will
    ' require modification.
    On Error GoTo Weekdays_Error
   
    ' The number of weekend days per week.
    Const ncNumberOfWeekendDays As Integer = 2
   
    ' The number of days inclusive.
    Dim varDays As Variant
   
    ' The number of weekend days.
    Dim varWeekendDays As Variant
   
    ' Temporary storage for datetime.
    Dim dtmX As Date
   
    ' If the end date is earlier, swap the dates.
    If endDate < startDate Then
        dtmX = startDate
        startDate = endDate
        endDate = dtmX
    End If
   
    ' Calculate the number of days inclusive (+ 1 is to add back startDate).
    varDays = DateDiff(Interval:="d", _
        date1:=startDate, _
        date2:=endDate) + 1
   
    ' Calculate the number of weekend days.
    varWeekendDays = (DateDiff(Interval:="ww", _
        date1:=startDate, _
        date2:=endDate) _
        * ncNumberOfWeekendDays) _
        + IIf(DatePart(Interval:="w", _
        Date:=startDate) = vbSunday, 1, 0) _
        + IIf(DatePart(Interval:="w", _
        Date:=endDate) = vbSaturday, 1, 0)
   
    ' Calculate the number of weekdays.
    Weekdays = (varDays - varWeekendDays)
   
Weekdays_Exit:
    Exit Function
   
Weekdays_Error:
    Weekdays = -1
    MsgBox "Error " & Err.Number & ": " & Err.Description, _
        vbCritical, "Weekdays"
    Resume Weekdays_Exit
End Function

-------

Public Function Workdays(ByRef startDate As Date, _
    ByRef endDate As Date, _
    Optional ByRef strHolidays As String = "Holidays" _
    ) As Integer
    ' Returns the number of workdays between startDate
    ' and endDate inclusive.  Workdays excludes weekends and
    ' holidays. Optionally, pass this function the name of a table
    ' or query as the third argument. If you don't the default
    ' is "Holidays".
    On Error GoTo Workdays_Error
    Dim nWeekdays As Integer
    Dim nHolidays As Integer
    Dim strWhere As String
   
    ' DateValue returns the date part only.
    startDate = DateValue(startDate)
    endDate = DateValue(endDate)
   
    nWeekdays = Weekdays(startDate, endDate)
    If nWeekdays = -1 Then
        Workdays = -1
        GoTo Workdays_Exit
    End If
   
    strWhere = "[Holiday] >= #" & startDate _
        & "# AND [Holiday] <= #" & endDate & "#"
   
    ' Count the number of holidays.
    nHolidays = DCount(Expr:="[Holiday]", _
        Domain:=strHolidays, _
        Criteria:=strWhere)
   
    Workdays = nWeekdays - nHolidays
   
Workdays_Exit:
    Exit Function
   
Workdays_Error:
    Workdays = -1
    MsgBox "Error " & Err.Number & ": " & Err.Description, _
        vbCritical, "Workdays"
    Resume Workdays_Exit
   
End Function
Avatar billede hugopedersen Nybegynder
10. december 2012 - 15:03 #3
Har du mulighed for at sende mig din db, så skal jeg prøve at se om jeg kan fikse det

oz8hp  snabelfidus  hotmail  prik  com
Avatar billede overgreat Forsker
10. december 2012 - 19:25 #4
Det vil være super.
Jeg har sendt dig filen.
Mange tak fordi du vil hjælpe.
Avatar billede hugopedersen Nybegynder
11. december 2012 - 06:52 #5
Og din fil er på vej retur

Resultaten af beregningerne kan ses i forespørgslen Query1
Avatar billede overgreat Forsker
11. december 2012 - 09:05 #6
tusind tak - det fungerer 100% - glæder mig til at se nærmere efter i koden hvordan du fik det til at fungere og lære!

Sender du svar.
Avatar billede hugopedersen Nybegynder
11. december 2012 - 09:11 #7
Det største 'problem' var nok at du havde givet funktionerne nye navne.
Så skal man lige huske at ændre alle steder :-)
Avatar billede overgreat Forsker
11. december 2012 - 12:49 #8
ahh, bedre at bruge standarden indtil mjeg har styr på det ;-)
Avatar billede hugopedersen Nybegynder
11. december 2012 - 16:18 #9
Når det er VBA så har du mulighed for at compile/debugge (kan ikke lige huske hvor det er i menuen) så burde den have fanget den fejl.

Tak for point
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