Boekings datum en tijden vergelijken

Status
Niet open voor verdere reacties.

badmaus

Gebruiker
Lid geworden
19 jun 2010
Berichten
11
Hallo,

Ik heb een vraag of iemand mij hiermee kan helpen.

Ik wil namelijk een VBA code maken die in mijn tabel "tblBehandelingen" de "behandeldag" en "behandeltijd" en "inleverdatum" en "inlevertijd" vergelijkt met de gegevens die zijn ingevoerd in het formulier, zodat er namelijk geen dubbele boekingen worden gedaan van bepaald artikel op de zelfde datum en tijdstip maar wel op de zelfde dag maar niet in de zelfde tijd.

Ben een groentje op het gebied van VBA.

Ik heb al wat uit gewerkt alleen werkt het niet wat doe ik fout?



Code:
Private Sub cmdSluiten_Click()
    
    If IsNull(Me!cboClient) Then
        MsgBox "Geen persoon geselecteerd op peoplesoft V nr!", vbExclamation, "Nieuwe behandeling"
        Me!cboClient.SetFocus
    ElseIf (Me!artikel = 0) Then
            MsgBox "Geen artikel geselecteerd!", vbExclamation, "Nieuwe behandeling"
            Me!artikel.SetFocus
    ElseIf Me!behandeldag < Date Then
            MsgBox "Kies een datum van vandaag of in de toekomst.", vbExclamation, "Nieuwe behandeling"
            Me!behandeldag.SetFocus      ' set cursor back in the date field
    ElseIf (Me!behandeltijd = 0) Then
            MsgBox "Kies een begintijd.", vbExclamation, "Nieuwe behandeling"
            Me!behandeltijd.SetFocus      ' set cursor back in the date field
    ElseIf Me!inleverdatum < Date Or Null Then
            MsgBox "Kies een datum van vandaag of in de toekomst.", vbExclamation, "Nieuwe behandeling"
            Me!inleverdatum.SetFocus      ' set cursor back in the date field
    ElseIf Me!inleverdatum < Me!behandeldag Then
            MsgBox "Kies een datum Gelijk aan de aanvraag datum of er na!.", vbExclamation, "Nieuwe behandeling"
            Me!inleverdatum.SetFocus      ' set cursor back in the date field
    ElseIf (Me!inlevertijd = 0) Then
            MsgBox "Kies een inlever tijd!.", vbExclamation, "Nieuwe behandeling"
            Me!inlevertijd.SetFocus      ' set cursor back in the date field
            Exit Sub
    ElseIf (Me!artikel = 1) Then
            Dim strSQL As String
            
      
  strSQL = "SELECT artikel & behandeldag & behandeltijd & inleverdatum & inlevertijd FROM tblbehandelingen WHERE artikel = Me!artikel;"
              If strSQL = "[artikel] = " & 1 Then
                If strSQL = "[behandeldag] = " & Me!behandeldag Then
                If strSQL = "[behandeltijd] = " & Me!behandeltijd Then
                     MsgBox "Dit artikel is al op deze datum en tijd gereserveerd!.", vbExclamation, "Nieuwe behandeling"
                        Me!inlevertijd.SetFocus
                        
    
        Else
        DoCmd.Close acForm, "frmAgendaEnkel", acSaveYes
            End If
        End If
    End If
End If
    
End Sub

Bij voorbaad dank,

Met vriendelijke groet,

Badmaus.
:confused:!!
 
Laatst bewerkt:
Het is handiger om je code tussen de
Code:
  [ /CODE] tags te plaatsen, dan is het veel duidelijker waar je code begint en eindigt.

EDIT: prima, je hebt je code tussen de tags geplaast.

Ik weet niks van de syntaxis van Visual Basic, maar volgens mij kun je waarden van variabelen vergelijken, zoals in elke programmeer taal, met ==(is gelijk aan), >=(groter dan of gelijk aan), <=(kleiner dan of gelijk aan), <(kleiner dan), >(groter dan) en !=(ongelijk aan), of iets vergelijkbaars. In Java bestaat de functie .equals() om strings te vergelijken, het zou me niks verbazen als er net zoiets in visual basic bestaat.

bmtvrr
 
Laatst bewerkt:
Help!!! met een sql select validatie

Hallo,

Kan iemand mij helpen, ik heb het een en ander al uit geprobeerd.
Ik kan allen niet vinden wat ik zoek.

Ik wil uit een SQL select een validatie/vergelijking maken wat de mensen in een formulier invullen, zodat de code (sql) kijkt of het artikel al is gereserveerd op een bepaalde datum en tijd.


:o:(:(



Code:
Private Sub cmdSluiten_Click()

Dim cnn As ADODB.Connection
Dim strSQL As String
Dim err As Boolean


       If IsNull(Me!cboClient) Then
        MsgBox "Geen persoon geselecteerd op peoplesoft V nr!", vbExclamation, "Nieuwe behandeling"
        Me!cboClient.SetFocus
        err = True
    ElseIf (Me!artikel = 0) Then
            MsgBox "Geen artikel geselecteerd!", vbExclamation, "Nieuwe behandeling"
            Me!artikel.SetFocus
            err = True
    ElseIf IsNull(Me!behandeldag) Then
            MsgBox "Kies een begin datum.", vbExclamation, "Nieuwe behandeling"
            err = True
    ElseIf Me!behandeldag < Date Then
            MsgBox "Kies een datum van vandaag of in de toekomst.", vbExclamation, "Nieuwe behandeling"

    ElseIf (Me!behandeltijd = 0) Then
            MsgBox "Kies een begintijd.", vbExclamation, "Nieuwe behandeling"
            Me!behandeltijd.SetFocus      ' set cursor back in the date field
            err = True
    ElseIf IsNull(Me!inleverdatum) Then
            MsgBox "Kies een eind datum.", vbExclamation, "Nieuwe behandeling"
            err = True
    ElseIf Me!inleverdatum < Date Or Null Then
            MsgBox "Kies een datum van vandaag of in de toekomst.", vbExclamation, "Nieuwe behandeling"
            Me!inleverdatum.SetFocus      ' set cursor back in the date field
            err = True
    ElseIf Me!inleverdatum < Me!behandeldag Then
            MsgBox "Kies een datum Gelijk aan de aanvraag datum of er na!.", vbExclamation, "Nieuwe behandeling"
            Me!inleverdatum.SetFocus      ' set cursor back in the date field
            err = True
    ElseIf (Me!inlevertijd = 0) Then
            MsgBox "Kies een inlever tijd!.", vbExclamation, "Nieuwe behandeling"
            Me!inlevertijd.SetFocus      ' set cursor back in the date field
            err = True
    ElseIf (Me!behandeldag = Me!inleverdatum) Then
            If (Me!behandeltijd >= Me!inlevertijd) Then
                MsgBox "Kies een inlever tijd die niet kleiner/gelijk is aan de reserveer tijd!.", vbExclamation, "Nieuwe behandeling"
            err = True
            
'run sql query to verify that the product date and time exist

    ElseIf Not err Then
        Set cnn = CurrentProject.Connection
        strSQL = "SELECT * FROM tblbehandelingen WHERE ID OLM=" & Me!artikel & ";"

If Me!artikel = [COLOR="red"]<artikel uit tabel>[/COLOR] Then
    If Me!behandeldag = [COLOR="red"]<behandeldag uit tabel>[/COLOR] Then
        If Me!behandeltijd = [COLOR="red"]<behandeltijd uit tabel>[/COLOR] Then
            MsgBox "Artikel reeds gereserveerd op deze datum en begintijd!.", vbExclamation, "Nieuwe behandeling"
 
     ElseIf Me!artikel = [COLOR="red"]<artikel uit tabel>[/COLOR] Then
                If Me!behandeldag  = [COLOR="red"]<behandeldag uit tabel>[/COLOR] Then
                    If Me!behandeltijd > [COLOR="red"]<behandeltijd uit tabel>[/COLOR] Then
                        If Me!behandeltijd < [COLOR="red"]<inlevertijd uit tabel>[/COLOR] Then
                            MsgBox "Artikel reeds gereserveerd op deze datum en tijd!.", vbExclamation, "Nieuwe behandeling"
                            
            ElseIf Me!artikel = [COLOR="red"]<artikel uit tabel> [/COLOR]Then
                If Me!behandeldag  = [COLOR="red"]<behandeldag uit tabel>[/COLOR] Then
                    If Me!behandeltijd < [COLOR="red"]<behandeltijd uit tabel>[/COLOR] Then
                        If Me!inlevertijd > [COLOR="red"]<behandeltijd uit tabel>[/COLOR] Then
                            MsgBox "Artikel reeds gereserveerd op deze datum en tijd!.", vbExclamation, "Nieuwe behandeling"

     
     Else

        DoCmd.Close
        End If
    End If
    End If
    End If
    End If
    End If

End Sub
 
Hallo,

Een verdere vraag.

Na wat uitproberen lukt het me dan toch om de controle goed uit te voeren met de volgende code:

Code:
  Private Sub cmdSluiten_Click() 

Dim err As Boolean 

       If IsNull(Me!cboClient) Then 
        MsgBox "Geen persoon geselecteerd op peoplesoft V nr!", vbExclamation, "Nieuwe behandeling" 
        Me!cboClient.SetFocus 
        err = True 
    ElseIf (Me!artikel = 0) Then 
            MsgBox "Geen artikel geselecteerd!", vbExclamation, "Nieuwe behandeling" 
            Me!artikel.SetFocus 
            err = True 
    ElseIf IsNull(Me!behandeldag) Then 
            MsgBox "Kies een begin datum.", vbExclamation, "Nieuwe behandeling" 
            err = True 
    ElseIf Me!behandeldag < Date Then 
            MsgBox "Kies een datum van vandaag of in de toekomst.", vbExclamation, "Nieuwe behandeling" 

    ElseIf (Me!behandeltijd = 0) Then 
            MsgBox "Kies een begintijd.", vbExclamation, "Nieuwe behandeling" 
            Me!behandeltijd.SetFocus 
            err = True 
    ElseIf IsNull(Me!inleverdatum) Then 
            MsgBox "Kies een eind datum.", vbExclamation, "Nieuwe behandeling" 
            err = True 
    ElseIf Me!inleverdatum < Date Or Null Then 
            MsgBox "Kies een datum van vandaag of in de toekomst.", vbExclamation, "Nieuwe behandeling" 
            Me!inleverdatum.SetFocus 
            err = True 
    ElseIf Me!inleverdatum < Me!behandeldag Then 
            MsgBox "Kies een datum Gelijk aan de aanvraag datum of er na!.", vbExclamation, "Nieuwe behandeling" 
            Me!inleverdatum.SetFocus 
            err = True 
    ElseIf (Me!inlevertijd = 0) Then 
            MsgBox "Kies een inlever tijd!.", vbExclamation, "Nieuwe behandeling" 
            Me!inlevertijd.SetFocus 
            err = True 
    ElseIf (Me!behandeldag = Me!inleverdatum) Then 
            If (Me!behandeltijd >= Me!inlevertijd) Then 
                MsgBox "Kies een inlever tijd die niet kleiner/gelijk is aan de reserveer tijd!.", vbExclamation, "Nieuwe behandeling" 
            err = True 
     Else 
      

Dim rsCheck As Recordset 
Dim strTitel, strTekst, strSQL As String 
Dim strDummy As Variant 


strSQL = "SELECT artikel, behandeldag, behandeltijd, inleverdatum, inlevertijd FROM tblBehandelingen WHERE artikel = " & Me!artikel & " and behandeldag = #" & Me!behandeldag & "# and behandeltijd = " & Me!behandeltijd & " Or artikel = " & Me!artikel & " and behandeldag = #" & Me!behandeldag & "# and behandeltijd < " & Me!behandeltijd & " And inlevertijd > " & Me!behandeltijd & " Or artikel = " & Me!artikel & " and behandeldag = #" & Me!behandeldag & "# and behandeltijd < " & Me!inlevertijd & " And inlevertijd > " & Me!behandeltijd & " ;" 
Set rsCheck = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset) 

If rsCheck.RecordCount > 0 Then 
  strTitel = "Dubbele boeking" 
  strTekst = "Waarschuwing!" & vbCrLf 
  rsCheck.MoveFirst 
  While rsCheck.EOF = False 
    strTekst = strTekst & "Op deze datum: " & rsCheck!behandeldag & "  is dit artikel " & rsCheck!artikel & " reeds gereserveerd" 
    rsCheck.MoveNext 
  Wend 
  strDummy = MsgBox(strTekst, vbOKOnly, strTitel) 
Else 
        DoCmd.Close 
           End If 
        End If 
    End If 
End Sub


Maar dan het volgende als de begin datum en inleverdatum gelijk zijn en de tijden komen niet voor in de sql controle, dan word de record toegevoegd aan de tabel.
Maar als de begin datum en de eind datum niet gelijk zijn doet hij niks, lijkt of hij dan stopt met het script en niet verder gaat.

Ik wil namelijk dat iemand ook een artikel kan reserveren voor een week of nog langer.

Wat kan hier het probleem zijn.

Wie kan mij hier mee helpen.

Gr Badmaus.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan