Een datum tussen twee andere datums verifieren (VB6)

Status
Niet open voor verdere reacties.

satriano17

Gebruiker
Lid geworden
30 sep 2012
Berichten
342
dag
ik heb 3 textbox als input voor drie datums
datamin = begin periode
datamax = einde periode
data rif= control datum

Mijn bedoeling is verifieren als control datum (rif) valt wel of niet tussen datamin en datamax.
Indien ja een event laten plaatsvinden. Anders niet.

Ik heb zo geprobeerd maar il krijg altijd 'ok' ook als de voorwarde verkeerd is.

Code:
Private Sub Command1_Click()
Dim datarif As Date
Dim datamin As Date
Dim datamax As Date

If (datarif > datamax) Or (datarif < datamin) Then
MsgBox ("Fout input")
Else
MsgBox ("Ok")
End If
End Sub

waar zit de fout?
dank u
 
Laatst bewerkt:
Dat komt omdat een datum zowel groter als kleiner mag zijn. Je moet AND gebruiken:
Code:
If datarif > datamax AND datarif < datamin Then
     MsgBox ("Fout input")
Else
     MsgBox ("Ok")
End If
 
Ik heb pas uw code getest.
Nog niet goed.
Ik krijg altijd OK ook als input niet tussen datamin en datamax is.
 
De code van OctaFish is goed.
Ik zie in je code nergens dat je die Textbox inhoud ook naar een Date converteerd.
 
Laatst bewerkt:
Dag edmoor.
Daar zit de fout dan. Ik heb inderdaad de inhoud niet naar een date format geconverteerd.
Hoe moet ik doen?
 
Bijvoorbeeld:
Code:
datarif = DateValue(TextBox1.Text)

Daarbij moet uiteraard de tekst van de tekstbox wel naar een datum te converteren zijn.
 
Probeer 'm zo eens:
Code:
If Cdate(Cdbl(datarif)) > Cdate(Cdbl(datamax)) AND Cdate(Cdbl(datarif)) < Cdate(Cdbl(datamin)) Then
 
Hier de aangepast code. Maar nog niet goed.
Ik geef als date format XX/XX/XXXX

Code:
Private Sub Command1_Click()
Dim datarif As Date
Dim datamin As Date
Dim datamax As Date
If CDate(CDbl(datarif)) > CDate(CDbl(datamax)) And CDate(CDbl(datarif)) < CDate(CDbl(datamin)) Then
     MsgBox ("Fout input")
Else
     MsgBox ("Ok")
End If
End Sub
 
Haal die Dim opdrachten weg.
En waar worden de waarden er voor gevuld?
 
Ik heb drie gewoon tekstbox als input

datamin.text
datamax.text
datarif.text

als ik die DIM oprdrachten wegdoe krijg ik error Typemismatch
 
Laatst bewerkt:
Je gebruikt in de code van OctaFish nergens de inhoud van die textboxen.
 
Wat ik al zei, je gebruikt nergens de tekst die in de textboxen is ingegeven.
Uiteraard krijg je dan telkens hetzelfde resultaat.
 
ik heb begrepen. in de code heb ik inderdaad neergens de drie textboxen. Ik dach dat

Code:
If CDate(CDbl(datarif)) > CDate(CDbl(datamax)) And CDate(CDbl(datarif)) < CDate(CDbl(datamin)) then

een link had met de textboxen die op het form staan. . Nee dus.
Moet van nul beginnen....
 
Daar staan nog steeds die tekstboxen niet in.
Code:
If CDate(TextBox1.Text) > CDate(TextBox2.Text) And CDate(TextBox1.Text) < CDate(TextBox3.Text) Then

Welke textbox wat is en hoe ze heten weet jij wel en ik niet.
 
Laatst bewerkt:
de textbox zijn
datamin
datmax
datarif
ik heb die in het begin van mijn post gegeven.

maar als ik zo doe krijg ik error invalid qualifier
Code:
If CDate(CDbl(datarif.Text)) > CDate(CDbl(datamax.Text)) And CDate(CDbl(datarif.Text)) < CDate(CDbl(datamin.Text)) Then
 
Laatst bewerkt:
Dat is ook niet wat in #15 staat.
Haal die Cdbl functies er uit.
 
Hier de volledig code.
Ik heb ook die Dim weggedaan zoals je had gezegd


Code:
Private Sub Command1_Click()
If CDate(datarif.Text) > CDate(datamax.Text) And CDate(datarif.Text) < CDate(datamin.Text) Then
     MsgBox ("Fout input")
Else
     MsgBox ("Ok")
End If
End Sub

e nog altijd 'OK' ook als de datum niet tussen datamin en datamax is.
 
Plaats dan een voorbeeld document en laat ook zien wat je precies in welke textbox invult.
 
Hier mijn voorbeeld bestand.
in min datum vul ik een begin datum bv; 01/01/2000
in max datum vul ik bv 02/02.2000

en dan in control datum vul ik bv 10/03/2000
dus een datum die niet in de range is en moet ik error krijgen.

als ik bv 15/01/2000 invul moet ok zijn want de datum zit tussen de twee eerste datums (min en max)
 

Bijlagen

Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan