Avatar billede akj Nybegynder
21. maj 2000 - 22:23 Der er 1 kommentar og
2 løsninger

If - Else- End if

Jeg har en lille rutine som skulle sammenligne dato´er, men jeg kan ikke få den til at virke.

----
Dim booketstarttid, booketsluttid As Date
Dim nystarttid, nysluttid As Date

bookstart = "18 apr 1999"
bookslut = "25 apr 1999"


nystart = "14 apr 1999"
nyslut = "26 apr 1999"

booketstarttid = DateValue(bookstart)
booketsluttid = DateValue(bookslut)
nystarttid = DateValue(nystart)
nysluttid = DateValue(nystart)



If nystarttid >= booketstarttid Then
If nystarttid >= booketsluttid Then

ok = True
Else
ok = False
End If
Else

If nysluttid <= booketsluttid Then
ok = True
Else
ok = False

End If
End If


If ok = True Then
MsgBox ("ledigt")
Else
MsgBox ("optaget")
End If
End Sub
---
Så snart nystarttid ligger før booketstarttid, og nysluttid ligger efter booketsluttid er "OK=True" hvilket ikke er rigtigt.
Hvordan kan dette løses ?
Avatar billede tdaugaard Nybegynder
21. maj 2000 - 22:41 #1
Har du prøvet at "25-04-99" istedet for "25 apr 1999" etc. ???
Avatar billede philiph Nybegynder
21. maj 2000 - 23:10 #2
tdaugaard har ret i at det muligvis er fordi VB ikke kan finde ud af at konvertere dine datoer til dato variable. Så prøv at læg datoerne ind med formatet dd-mm-yyyy.

Prøv lige efter de fire datotilskrivninger at indsætte debug udskrivninger af variablerne:

Debug.Print booketstarttid
Debug.Print booketsluttid
Debug.Print nystarttid
Debug.Print nysluttid

Og check at de forventede datoer udskrives i udtryksvinduet (Ctrl-G).
Prøv evt at benytte CDate() funktionen i stedet.

Din "måle-kode" ser ud til at være korrekt.

Philip

Avatar billede tdaugaard Nybegynder
21. maj 2000 - 23:27 #3
Din kode kan faktisk fylder RET lidt:

-----------------------------------------------------
Dim booketstarttid As Date, booketsluttid As Date
Dim nystarttid As Date, nysluttid As Date

bookstart = "18-04-1999"
bookslut = "25-05-1999"

nystart = "14-04-1999"
nyslut = "26-04-1999"

Select Case nystarttid >= booketstarttid
    Case True:  ok = nystarttid >= booketsluttid
    Case False: ok = nysluttid <= booketsluttid
End Select

Select Case ok
    Case True:  MsgBox "ledigt"
    Case False: MsgBox "optaget"
End Select
-----------------------------------------------------

At sige

If vblabla < yaddayadda Then
    ok = True
Else
    ok = False
End If

er det samme som

ok = vblabla < yaddayadda

da "vblabla < yaddayadda" er en evaluering der vil returnere enten True eller False behøver du ikke selv evaluere den med en If..Else..Then blok.
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
Kurser inden for grundlæggende programmering

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