12. juli 2020 - 20:48Der er
9 kommentarer og 2 løsninger
Returnering af forkert dato i Access
Hej
Prøver at sætte mig ind i hvordan programmering i Access fungerer så jeg har købt en bog :-)
sidder med et eksempel hvor jeg får en forkert dato ud fra en programstump:
Sub WhatTypeOfDay()
Dim response As String Dim question As String Dim strMsg1 As String, strMsg2 As String Dim myDate As Date
question = "Enter any date in the format mm/dd/yyyy:" _ & Chr(13) & " (e.g., 07/06/2015)" strMsg1 = "weekday" strMsg2 = "weekend" response = InputBox(question)
myDate = Weekday(CDate(response))
MsgBox myDate
If myDate >= 2 And myDate <= 6 Then MsgBox strMsg1 Else MsgBox strMsg2 End If
End Sub
Jeg har indtastet dato som US format 07/12/2020 (søndag den 12 juli 2020) men får værdien 01-01-1900 fra linien MsgBox myDate
Har prøvet at indtaste dato som 12/07/2020 og 12-07-2020 men får så returneret datoen 31-12-1899
Kan ikke gennemskue hvor det går galt - mine windows indstillinger er sat til Nuværende format: Dansk (Danmark)
Datoer i Access er et helvede... Det vil du opdage, når du kommer der henad...
Nedenstående sub rettet til...
Sub WhatTypeOfDay()
Dim response As Date Dim question As String Dim strMsg1, strMsg2 As String Dim myDay As Long
question = "Enter any date in the format mm/dd/yyyy:" & Chr(13) & " (e.g., 07/06/2015)" strMsg1 = "weekday" strMsg2 = "weekend" response = InputBox(question)
myDay = Weekday(response, vbMonday) MsgBox myDay
If myDay >= 1 And myDay <= 5 Then MsgBox strMsg1 Else MsgBox strMsg2 End If
Dim response As String Dim question As String Dim strMsg1 As String, strMsg2 As String Dim myDate As Date
question = "Enter any date in the format mm/dd/yyyy:" _ & Chr(13) & " (e.g., 07/06/2015)" strMsg1 = "weekday" strMsg2 = "weekend" response = InputBox(question)
myDate = CDate(response)
MsgBox myDate
If Weekday(myDate, vbMonday) < 6 Then MsgBox strMsg1 Else MsgBox strMsg2 End If
Weekday(dato) returnerer hvilken dag i ugen 'dato' er - fx '1' for søndag, '2' for mandag osv. ved default indstilling (dvs. 1. dag i ugen er søndag) . Dette resultat bliver derpå assignet til myDate, som tolker værdien som om det var en dato (fordi myDate har typen Date). Dette giver følgende resultater:
Ikke mig bekendt - jeg bruger tab og shift+tab til at rykke linjer frem og tilbage. NB du kan rykke flere linjer ad gangen, ved at markere dem alle og trykke tab :-)
Jeps, har rettet til som du har lavet sub'en og det virker :-)
men nu har jeg tænkt ;-) og hvis jeg ændrer myDate fra Date til Integer så virker det sku :-) - som den eneste ændring i forhold til den oprindelige sub tekst
for som du skriver så er datoer jo angivet internt i Access som et nummer som er lig med de værdier du angiver - og det er vel derfor det går galt ?
Dim question As String Dim day As String Dim myDate As Date
question = InputBox("Enter any date " _ & Chr(13) & " (e.g., 07/14/2020 or 14-07-2020)")
myDate = CDate(question)
Select Case Weekday(myDate, vbMonday) Case Is = 1 day = "mandag" Case Is = 2 day = "tirsdag" Case Is = 3 day = "onsdag" Case Is = 4 day = "torsdag" Case Is = 5 day = "fredag" Case Is = 6 day = "lørdag" Case Is = 7 day = "søndag" End Select
MsgBox myDate & " er en " & day End Sub
Synes godt om
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.