21. juli 2017 - 12:30Der er
7 kommentarer og 1 løsning
Beregne forskel på datoer i formatet DD-MM-ÅÅÅÅ TT-MM-SS
Hej alle ( genier )
Jeg har lige et udregnings-problem i Access jeg meget gerne vil have lidt hjælp til.. Forskellen mellem 17-01-2017 11:53:10 og 13-01-2017 09:30:00 vises som 03-01-1900 02:23:10,når de trækkes fra hinanden, men jeg ønsker det vist således 3 døgn (72 timer ) og 02:23:10 eller noget a´la 74:23:10 divideret med 24 og rest TT-MM-SS
et andet eksempel :
forskellen på start- og slutdato Start 02-06-2017 16:30:00 Slut 20-07-2017 12:48:24 giver dette 15-02-1900 20:18:24 (hvilket er cirka 15 døgn + 1 måned + 20 timer ( 47,85 døgn ))
Håber der er én eller flere, der kan komme med fornuftige og ikke mindst brugbare indspark til mit lille problem
Dim booCalcYears As Boolean Dim booCalcMonths As Boolean Dim booCalcDays As Boolean Dim booCalcHours As Boolean Dim booCalcMinutes As Boolean Dim booCalcSeconds As Boolean Dim booSwapped As Boolean Dim dtTemp As Date Dim intCounter As Integer Dim lngDiffYears As Long Dim lngDiffMonths As Long Dim lngDiffDays As Long Dim lngDiffHours As Long Dim lngDiffMinutes As Long Dim lngDiffSeconds As Long Dim varTemp As Variant
Const INTERVALS As String = "dmyhns"
'Check that Interval contains only valid characters Interval = LCase$(Interval) For intCounter = 1 To Len(Interval) If InStr(1, INTERVALS, Mid$(Interval, intCounter, 1)) = 0 Then Exit Function End If Next intCounter
'Check that valid dates have been entered If Not (IsDate(Date1)) Then Exit Function If Not (IsDate(Date2)) Then Exit Function
'If necessary, swap the dates, to ensure that 'Date1 is lower than Date2 If Date1 > Date2 Then dtTemp = Date1 Date1 = Date2 Date2 = dtTemp booSwapped = True End If
'Get the cumulative differences If booCalcYears Then lngDiffYears = Abs(DateDiff("yyyy", Date1, Date2)) - _ IIf(Format$(Date1, "mmddhhnnss") <= Format$(Date2, "mmddhhnnss"), 0, 1) Date1 = DateAdd("yyyy", lngDiffYears, Date1) End If
If booCalcMonths Then lngDiffMonths = Abs(DateDiff("m", Date1, Date2)) - _ IIf(Format$(Date1, "ddhhnnss") <= Format$(Date2, "ddhhnnss"), 0, 1) Date1 = DateAdd("m", lngDiffMonths, Date1) End If
If booCalcDays Then lngDiffDays = Abs(DateDiff("d", Date1, Date2)) - _ IIf(Format$(Date1, "hhnnss") <= Format$(Date2, "hhnnss"), 0, 1) Date1 = DateAdd("d", lngDiffDays, Date1) End If
If booCalcHours Then lngDiffHours = Abs(DateDiff("h", Date1, Date2)) - _ IIf(Format$(Date1, "nnss") <= Format$(Date2, "nnss"), 0, 1) Date1 = DateAdd("h", lngDiffHours, Date1) End If
If booCalcMinutes Then lngDiffMinutes = Abs(DateDiff("n", Date1, Date2)) - _ IIf(Format$(Date1, "ss") <= Format$(Date2, "ss"), 0, 1) Date1 = DateAdd("n", lngDiffMinutes, Date1) End If
If booCalcSeconds Then lngDiffSeconds = Abs(DateDiff("s", Date1, Date2)) Date1 = DateAdd("s", lngDiffSeconds, Date1) End If
If booCalcYears And (lngDiffYears > 0 Or ShowZero) Then varTemp = lngDiffYears & IIf(lngDiffYears <> 1, " years", " year") End If
If booCalcMonths And (lngDiffMonths > 0 Or ShowZero) Then If booCalcMonths Then varTemp = varTemp & IIf(IsNull(varTemp), Null, " ") & _ lngDiffMonths & IIf(lngDiffMonths <> 1, " months", " month") End If End If
If booCalcDays And (lngDiffDays > 0 Or ShowZero) Then If booCalcDays Then varTemp = varTemp & IIf(IsNull(varTemp), Null, " ") & _ lngDiffDays & IIf(lngDiffDays <> 1, " days", " day") End If End If
If booCalcHours And (lngDiffHours > 0 Or ShowZero) Then If booCalcHours Then varTemp = varTemp & IIf(IsNull(varTemp), Null, " ") & _ lngDiffHours & IIf(lngDiffHours <> 1, " hours", " hour") End If End If
If booCalcMinutes And (lngDiffMinutes > 0 Or ShowZero) Then If booCalcMinutes Then varTemp = varTemp & IIf(IsNull(varTemp), Null, " ") & _ lngDiffMinutes & IIf(lngDiffMinutes <> 1, " minutes", " minute") End If End If
If booCalcSeconds And (lngDiffSeconds > 0 Or ShowZero) Then If booCalcSeconds Then varTemp = varTemp & IIf(IsNull(varTemp), Null, " ") & _ lngDiffSeconds & IIf(lngDiffSeconds <> 1, " seconds", " second") End If End If
If booSwapped Then varTemp = "-" & varTemp End If
Diff2Dates = Trim$(varTemp)
End_Diff2Dates: Exit Function
Err_Diff2Dates: Resume End_Diff2Dates
End Function '************** Code End *****************
Jeg kunne bruge kabbak´s forslag, og det virker lige som det skal..
Mit problem var lige at komme ind i rutinerne og checke om det hele virkede som det skulle ( hvor pokker var det lige, jeg skulle bruge koden... ;o) ,- det kan være sundt at holde en lang velfortjent ferie, men det kan være hårdt lige at finde ud, hvor det ar man slap, inden ferien,- men nu er jeg vist ved at være oppe i gear igen...
Beklager den "noget" lange responstid på en fornuftig tilbagemelding... Jeg siger tak for de gode bud..og jeres tid ...
Great you could use one of the solutions, hope you had a good holiday ;-)
BR Terry
Synes godt om
1 synes godt om dette
Ny brugerNybegynder
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.