Avatar billede gp Nybegynder
12. januar 2005 - 10:13 Der er 7 kommentarer og
1 løsning

Dato beregning

Når jeg indtaster men start tid skal den nedrunde til nærmeste kvarte. Og skut tid skal oprunde til nærmeste kvarter.

Jeg har brug for diff mellem en start tid og en slut tid i formatet hh:nn. -30 minutter hvis slut tid er efter 12:30.

Jeg ar arbejdet med DatePart og dateDiff men jeg kan ikke få dem til at vise det rigtige...
12. januar 2005 - 10:30 #1
Nu ved jeg ikke om du arbejder i VBA eller i en forespørgsl. Men jeg tror, at det er nemmest i VBA. Put disse fnktioner i et modul og brug GetDateDiff(Start, slut):

Public Function GetDateDiff(Start As Date, Slut As Date) As String
    Dim tmp As Date
    tmp = OprundTid(Slut) - NedrundTid(Start)
    If Slut > #12:30:00 PM# Then
        tmp = DateAdd("n", -30, tmp)
    End If
    GetDateDiff = Format(tmp, "hh:nn")

End Function


Public Function NedrundTid(Tid As Date) As Date
    NedrundTid = TimeSerial(Hour(Tid), Minute(Tid) - (Minute(Tid) Mod 15), 0)
End Function

Public Function OprundTid(Tid As Date) As Date
    OprundTid = TimeSerial(Hour(Tid), Minute(Tid) - (Minute(Tid) Mod 15) + 15, 0)
End Function
12. januar 2005 - 12:24 #2
gp?
Avatar billede gp Nybegynder
12. januar 2005 - 13:40 #3
Sorry min PC har været nede ;(
Avatar billede gp Nybegynder
12. januar 2005 - 13:51 #4
Jeg har to felter
StartTid  og  SlutTid, hvordan få jeg GetDateDiff til rette tiden efter jeg har taster tiden ind?
Avatar billede terry Ekspert
12. januar 2005 - 17:34 #5
I would think in the before update event for each dateTime field on the form which you want to round
12. januar 2005 - 17:46 #6
Ja, jeg forsøgte af skrive en længere forklaring før, men da jeg trykkede Send, så var Eksperten nede :o(

På BeforeUpdate på StartTid lægger du denne kode:

Me!StartTid = NedrundTid(Me!StartTid)

og tilsvarende på SlutTid_BeforeUpdate:

Me!SlutTid = OpRundTid(Me!SlutTid).

Herefter kan du reducere GetDateDiff således:

Public Function GetDateDiff(Start As Date, Slut As Date) As String
    Dim tmp As Date
    tmp = Slut - Start
    If Slut > #12:30:00 PM# Then
        tmp = DateAdd("n", -30, tmp)
    End If
    GetDateDiff = Format(tmp, "hh:nn")
End Function
Avatar billede gp Nybegynder
12. januar 2005 - 17:52 #7
Jeg er ikke ved db nu, jeg kigger på det i morgen.
Avatar billede gp Nybegynder
13. januar 2005 - 09:17 #8
Det er helt fint det skal bare flyttes til AfterUpdate
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