Velden verplicht in te vullen

Status
Niet open voor verdere reacties.

Stamperke

Gebruiker
Lid geworden
1 okt 2014
Berichten
7
hoi iedereen,

heb problemen met volgende knop:
het is de bedoeling dat, via VBA, het record pas wordt opgeslagen wanneer bepaalde velden zijn ingevuld.
maw.
wanneer het veld "HeenenweerSoort" op 1 staat moet het veld "aankomst" zijn ingevuld. Wanneer dit niet zo is zou er een vermelding moeten verschijnen: "Verplichte velden zijn niet ingevuld"
wanneer het veld "HeenenweerSoort" op 2 staat moeten dan weer de velden "tijdstip" en "cc" ingevuld worden. indien niet opnieuw de vermelding: "Verplichte velden zijn niet ingevuld"
enz...

Pas als er voldaan is mag er via een knop naar een volgend record gegaan worden.

Wie zou mij kunnen helpen? TOA

De code die niet werkt:
Code:
Private Sub Knop105_Click()
If Me.HeenenweerSoort = 1 And IsNull([Aankomst]) Then
    MsgBox "Verplichte velden zijn niet ingevuld"
    Else
    If Me.HeenenweerSoort = 2 And IsNull([Tijdstip]) Or Me.HeenenweerSoort = 2 And IsNull([Cc]) Then
        MsgBox "Verplichte velden zijn niet ingevuld"
        Else
        If Me.HeenenweerSoort = 3 Or 7 And IsNull([Tijdstip]) Or Me.HeenenweerSoort = 3 Or 7 And IsNull([Gram]) Then
            MsgBox "Verplichte velden zijn niet ingevuld"
            Else
            If Me.HeenenweerSoort = 4 Or 8 And IsNull([Tijdstip]) Or Me.HeenenweerSoort = 4 Or 8 And IsNull([Keuzelijst45]) Then
                MsgBox "Verplichte velden zijn niet ingevuld"
                Else
                If Me.HeenenweerSoort = 5 Or 6 Or 14 And IsNull([Tijdstip]) Then
                    MsgBox "Verplichte velden zijn niet ingevuld"
                    Else
                    If Me.HeenenweerSoort = 9 And IsNull([Tijdstip]) Or Me.HeenenweerSoort = 9 And IsNull([Nota]) Then
                        MsgBox "Verplichte velden zijn niet ingevuld"
                        Else
                        If Me.HeenenweerSoort = 10 And IsNull([Tijdstip]) Or Me.HeenenweerSoort = 10 And IsNull([Spelen]) Then
                            MsgBox "Verplichte velden zijn niet ingevuld"
                            Else
                            If Me.HeenenweerSoort = 11 And IsNull([Tijdstip]) Or Me.HeenenweerSoort = 11 And IsNull([Koorts]) Then
                                MsgBox "Verplichte velden zijn niet ingevuld"
                                Else
                                If Me.HeenenweerSoort = 12 And IsNull([Tijdstip]) Or Me.HeenenweerSoort = 12 And IsNull([Nota]) Then
                                    MsgBox "Verplichte velden zijn niet ingevuld"
                                    Else
                                    If Me.HeenenweerSoort = 13 And IsNull([Vertrek]) Then
                                        MsgBox "Verplichte velden zijn niet ingevuld"
                                        Else
                                            DoCmd.GoToRecord , , acNewRec
                                            Me.Aankomst.Enabled = False
                                            Me.Vertrek.Enabled = False
                                            Me.Tijdstip.Enabled = False
                                            Me.Cc.Enabled = False
                                            Me.Gram.Enabled = False
                                            Me.Keuzelijst45.Enabled = False
                                            Me.Koorts.Enabled = False
                                            Me.Spelen.Enabled = False
                                            Me.Knop92.Enabled = False
                                            Me.Nota.Enabled = False
                                            Me.Keuzelijst35.Enabled = False
                                            [Forms]![frmHeenenWeer]![Tekst84].SetFocus
                                        End If
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End If

End Sub
 
Laten we eerst eens kijken naar die ongelooflijk ingewikkelde constructie die je hebt bedacht voor je checks. Die kan een heel stuk simpeler. Als ik 'm goed begrijp, is dit wat je wilt checken:
Code:
Select Case Me.HeenenweerSoort
    Case 1
        If IsNull([Aankomst]) Then MsgBox "[Aankomst] is niet ingevuld"
        Exit Sub
    Case 2
    If IsNull([Tijdstip]) And IsNull([Cc]) Then
        MsgBox "[Tijdstip] en [Cc] zijn niet ingevuld"
        Exit Sub
    Case 3 Or 7
        If IsNull([Tijdstip]) And IsNull([Gram]) Then MsgBox "[Tijdstip] en [Gram] zijn niet ingevuld"
        Exit Sub
    Case 4 Or 8
        If IsNull([Tijdstip]) And IsNull([Keuzelijst45]) Then MsgBox "[Tijdstip] en [Keuzelijst45] zijn niet ingevuld"
    Case 5 Or 6 Or 14
        If IsNull([Tijdstip]) Then MsgBox "[Tijdstip] is niet ingevuld"
        Exit Sub
    Case 9
        If IsNull([Tijdstip]) And IsNull([Nota]) Then MsgBox "[Tijdstip] en [Nota] zijn niet ingevuld"
        Exit Sub
    Case 10
        If IsNull([Tijdstip]) And IsNull([Spelen]) Then MsgBox "[Tijdstip] en [Spelen] zijn niet ingevuld"
        Exit Sub
    Case 11
        If IsNull([Tijdstip]) And IsNull([Koorts]) Then MsgBox "[Tijdstip] en [Koorts] zijn niet ingevuld"
        Exit Sub
    Case 12
        If IsNull([Tijdstip]) And IsNull([Nota]) Then MsgBox "[Tijdstip] en [Nota] zijn niet ingevuld"
        Exit Sub
    Case 13
        If IsNull([Vertrek]) Then MsgBox "[Vertrek] is niet ingevuld"
    Case Else
End Select

Maar nu het opslaan zelf... Blijkbaar heb je een niet-gebonden formulier gemaakt, anders zou je niet op deze manier willen werken. Maar wat zie ik vervolgens gebeuren? Als je controleslag goed is verlopen, maak je een nieuw record aan! Iets dat op een niet-gebonden formulier sowieso al onzinnig is, maar dit terzijde. In dat nieuwe record (wat dus per definitie altijd leeg is, op de standaardwaarden na) zet je alle Enabled eigenschappen op False! Resultaat: geen enkel veld is nog te bewerken... Zit je daar met je goeie wil in een nieuw record, en mag je niks invullen! Lijkt mij allemaal niet de bedoeling...
 
Heb je goed gezien :) Octafish.

Na een nieuw record te nemen, verplaatst ie de focus naar veld "Tekst84" op het hoofdformulier.

Code:
                                            DoCmd.GoToRecord , , acNewRec
                                            Me.Aankomst.Enabled = False
                                            Me.Vertrek.Enabled = False
                                            Me.Tijdstip.Enabled = False
                                            Me.Cc.Enabled = False
                                            Me.Gram.Enabled = False
                                            Me.Keuzelijst45.Enabled = False
                                            Me.Koorts.Enabled = False
                                            Me.Spelen.Enabled = False
                                            Me.Knop92.Enabled = False
                                            Me.Nota.Enabled = False
                                            Me.Keuzelijst35.Enabled = False
                                            [Forms]![frmHeenenWeer]![Tekst84].SetFocus

Wanneer dit veld de focus krijgt, laat hij het subformulier verdwijnen.

Code:
Private Sub Tekst84_GotFocus()
Me.Sub113.Visible = False
Me.Refresh

End Sub

Bij het drukken van "knop 115" opent hij opnieuw het subformulier met enkel het vak "Personeel" mogelijks in te vullen.

Code:
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord , , acNewRec
    Me.Aankomst.Enabled = False
    Me.Vertrek.Enabled = False
    Me.Tijdstip.Enabled = False
    Me.Cc.Enabled = False
    Me.Gram.Enabled = False
    Me.Keuzelijst45.Enabled = False
    Me.Koorts.Enabled = False
    Me.Spelen.Enabled = False
    Me.Knop92.Enabled = False
    Me.Nota.Enabled = False
    Me.Keuzelijst35.Enabled = False
    Me.Knop105.Enabled = True
    Me.Personeel.SetFocus
End Sub

Na dit vak in te vullen kan men het vak "Heenenweersoort" invullen

Code:
Private Sub Personeel_AfterUpdate()
Me.Keuzelijst35.Enabled = True

End Sub

... en daar gebeurt de selectie van de in te vullen vakken

Code:
Private Sub Keuzelijst35_AfterUpdate()
Me.Datum = [Forms]![frmHeenenWeer]![Tekst84]
Me.Kind = [Forms]![frmHeenenWeer]![Tekst106]
Me.Requery
DoCmd.GoToRecord , , acLast
If Me.HeenenweerSoort = Null Then
    Me.Aankomst.Enabled = False
    Me.Vertrek.Enabled = False
    Me.Tijdstip.Enabled = False
    Me.Cc.Enabled = False
    Me.Gram.Enabled = False
    Me.Keuzelijst45.Enabled = False
    Me.Koorts.Enabled = False
    Me.Spelen.Enabled = False
    Me.Knop92.Enabled = False
    Me.Nota.Enabled = False
    Else
    If Me.HeenenweerSoort = 1 Then
        Me.Aankomst.Enabled = True
        Me.Vertrek.Enabled = False
        Me.Tijdstip.Enabled = False
        Me.Cc.Enabled = False
        Me.Gram.Enabled = False
        Me.Keuzelijst45.Enabled = False
        Me.Koorts.Enabled = False
        Me.Spelen.Enabled = False
        Me.Knop92.Enabled = False
        Me.Nota.Enabled = False
        Else
        If Me.HeenenweerSoort = 2 Then
            Me.Aankomst.Enabled = False
            Me.Vertrek.Enabled = False
            Me.Tijdstip.Enabled = True
            Me.Cc.Enabled = True
            Me.Gram.Enabled = False
            Me.Keuzelijst45.Enabled = False
            Me.Koorts.Enabled = False
            Me.Spelen.Enabled = False
            Me.Knop92.Enabled = False
            Me.Nota.Enabled = False
            Else
            If Me.HeenenweerSoort = 3 Then
                Me.Aankomst.Enabled = False
                Me.Vertrek.Enabled = False
                Me.Tijdstip.Enabled = True
                Me.Cc.Enabled = False
                Me.Gram.Enabled = True
                Me.Keuzelijst45.Enabled = False
                Me.Koorts.Enabled = False
                Me.Spelen.Enabled = False
                Me.Knop92.Enabled = False
                Me.Nota.Enabled = False
                Else
                If Me.HeenenweerSoort = 4 Then
                    Me.Aankomst.Enabled = False
                    Me.Vertrek.Enabled = False
                    Me.Tijdstip.Enabled = True
                    Me.Cc.Enabled = False
                    Me.Gram.Enabled = False
                    Me.Keuzelijst45.Enabled = True
                    Me.Koorts.Enabled = False
                    Me.Spelen.Enabled = False
                    Me.Knop92.Enabled = False
                    Me.Nota.Enabled = False
                    Else
                    If Me.HeenenweerSoort = 5 Then
                        Me.Aankomst.Enabled = False
                        Me.Vertrek.Enabled = False
                        Me.Tijdstip.Enabled = True
                        Me.Cc.Enabled = False
                        Me.Gram.Enabled = False
                        Me.Keuzelijst45.Enabled = False
                        Me.Koorts.Enabled = False
                        Me.Spelen.Enabled = False
                        Me.Knop92.Enabled = False
                        Me.Nota.Enabled = False
                        Else
                        If Me.HeenenweerSoort = 6 Then
                            Me.Aankomst.Enabled = False
                            Me.Vertrek.Enabled = False
                            Me.Tijdstip.Enabled = True
                            Me.Cc.Enabled = False
                            Me.Gram.Enabled = False
                            Me.Keuzelijst45.Enabled = False
                            Me.Koorts.Enabled = False
                            Me.Spelen.Enabled = False
                            Me.Knop92.Enabled = False
                            Me.Nota.Enabled = False
                            Else
                            If Me.HeenenweerSoort = 7 Then
                                Me.Aankomst.Enabled = False
                                Me.Vertrek.Enabled = False
                                Me.Tijdstip.Enabled = True
                                Me.Cc.Enabled = False
                                Me.Gram.Enabled = True
                                Me.Keuzelijst45.Enabled = False
                                Me.Koorts.Enabled = False
                                Me.Spelen.Enabled = False
                                Me.Knop92.Enabled = False
                                Me.Nota.Enabled = False
                                Else
                                If Me.HeenenweerSoort = 8 Then
                                    Me.Aankomst.Enabled = False
                                    Me.Vertrek.Enabled = False
                                    Me.Tijdstip.Enabled = True
                                    Me.Cc.Enabled = False
                                    Me.Gram.Enabled = False
                                    Me.Keuzelijst45.Enabled = True
                                    Me.Koorts.Enabled = False
                                    Me.Spelen.Enabled = False
                                    Me.Knop92.Enabled = False
                                    Me.Nota.Enabled = False
                                    Else
                                    If Me.HeenenweerSoort = 9 Then
                                        Me.Aankomst.Enabled = False
                                        Me.Vertrek.Enabled = False
                                        Me.Tijdstip.Enabled = True
                                        Me.Cc.Enabled = False
                                        Me.Gram.Enabled = False
                                        Me.Keuzelijst45.Enabled = False
                                        Me.Koorts.Enabled = False
                                        Me.Spelen.Enabled = False
                                        Me.Knop92.Enabled = False
                                        Me.Nota.Enabled = True
                                        Else
                                        If Me.HeenenweerSoort = 10 Then
                                            Me.Aankomst.Enabled = False
                                            Me.Vertrek.Enabled = False
                                            Me.Tijdstip.Enabled = True
                                            Me.Cc.Enabled = False
                                            Me.Gram.Enabled = False
                                            Me.Keuzelijst45.Enabled = False
                                            Me.Koorts.Enabled = False
                                            Me.Spelen.Enabled = True
                                            Me.Knop92.Enabled = True
                                            Me.Nota.Enabled = False
                                            Else
                                            If Me.HeenenweerSoort = 11 Then
                                                Me.Aankomst.Enabled = False
                                                Me.Vertrek.Enabled = False
                                                Me.Tijdstip.Enabled = True
                                                Me.Cc.Enabled = False
                                                Me.Gram.Enabled = False
                                                Me.Keuzelijst45.Enabled = False
                                                Me.Koorts.Enabled = True
                                                Me.Spelen.Enabled = False
                                                Me.Knop92.Enabled = False
                                                Me.Nota.Enabled = False
                                                Else
                                                If Me.HeenenweerSoort = 12 Then
                                                    Me.Aankomst.Enabled = False
                                                    Me.Vertrek.Enabled = False
                                                    Me.Tijdstip.Enabled = True
                                                    Me.Cc.Enabled = False
                                                    Me.Gram.Enabled = False
                                                    Me.Keuzelijst45.Enabled = False
                                                    Me.Koorts.Enabled = False
                                                    Me.Spelen.Enabled = False
                                                    Me.Knop92.Enabled = False
                                                    Me.Nota.Enabled = True
                                                    Else
                                                    If Me.HeenenweerSoort = 13 Then
                                                        Me.Aankomst.Enabled = False
                                                        Me.Vertrek.Enabled = True
                                                        Me.Tijdstip.Enabled = False
                                                        Me.Cc.Enabled = False
                                                        Me.Gram.Enabled = False
                                                        Me.Keuzelijst45.Enabled = False
                                                        Me.Koorts.Enabled = False
                                                        Me.Spelen.Enabled = False
                                                        Me.Knop92.Enabled = False
                                                        Me.Nota.Enabled = False
                                                        Else
                                                        If Me.HeenenweerSoort = 14 Then
                                                            Me.Aankomst.Enabled = False
                                                            Me.Vertrek.Enabled = False
                                                            Me.Tijdstip.Enabled = True
                                                            Me.Cc.Enabled = False
                                                            Me.Gram.Enabled = False
                                                            Me.Keuzelijst45.Enabled = False
                                                            Me.Koorts.Enabled = False
                                                            Me.Spelen.Enabled = False
                                                            Me.Knop92.Enabled = False
                                                            Me.Nota.Enabled = True
                                                        End If
                                                    End If
                                                End If
                                           End If
                                      End If
                                 End If
                            End If
                       End If
                    End If
                End If
            End If
        End If
    End If
End If
End If

End Sub

Ik denk dat die laatste code ook via case kan en ook veel eenvoudiger.

Kunt u dit een beetje volgen :o

thx
 
Beste Octafish,

krijg de compileerfout: case zonder select case als ik uw code gebruik :(
 
Briljant ingewikkeld :). Eén voordeel: je maakt mensen al bij voorbaat dermate moedeloos dat elke moed om er aan te klooien spontaan door de broekspijpen zakt :D.
 
:thumb:

ben hem aan het vereenvoudigen, laat nog iets weten.
Compileerfout ook ontdekt, "Heenenweersoort" was een keuzeveld vandaar eerst numeriek moeten zetten.
 
Dus voorlopig zit ik met deze code:

Code:
Private Sub Knop105_Click()
Select Case Me.Tekst110
    Case 1
        If IsNull([Aankomst]) Then MsgBox "[Aankomst] is niet ingevuld"
        Exit Sub
    Case 2
        If IsNull([Tijdstip]) Or IsNull([Cc]) Then MsgBox "[Tijdstip] en/of [Cc] zijn niet ingevuld"
        Exit Sub
    Case 3
        If IsNull([Tijdstip]) Or IsNull([Gram]) Then MsgBox "[Tijdstip] en/of [Gram] zijn niet ingevuld"
        Exit Sub
    Case 4
        If IsNull([Tijdstip]) Or IsNull([Keuzelijst45]) Then MsgBox "[Tijdstip] en/of [Hoeveelheid] zijn niet ingevuld"
        Exit Sub
    Case 5
        If IsNull([Tijdstip]) Then MsgBox "[Tijdstip] is niet ingevuld"
        Exit Sub
    Case 6
        If IsNull([Tijdstip]) Then MsgBox "[Tijdstip] is niet ingevuld"
        Exit Sub
    Case 7
        If IsNull([Tijdstip]) Or IsNull([Gram]) Then MsgBox "[Tijdstip] en/of [Gram] zijn niet ingevuld"
        Exit Sub
    Case 8
        If IsNull([Tijdstip]) Or IsNull([Keuzelijst45]) Then MsgBox "[Tijdstip] en/of [Hoeveelheid] zijn niet ingevuld"
        Exit Sub
    Case 9
        If IsNull([Tijdstip]) Or IsNull([Nota]) Then MsgBox "[Tijdstip] en/of [Nota] zijn niet ingevuld"
        Exit Sub
    Case 10
        If IsNull([Tijdstip]) Or IsNull([Spelen]) Then MsgBox "[Tijdstip] en/of [Spelen] zijn niet ingevuld"
        Exit Sub
    Case 11
        If IsNull([Tijdstip]) Or IsNull([Koorts]) Then MsgBox "[Tijdstip] en/of [Koorts] zijn niet ingevuld"
        Exit Sub
    Case 12
        If IsNull([Tijdstip]) Or IsNull([Nota]) Then MsgBox "[Tijdstip] en/of [Nota] zijn niet ingevuld"
        Exit Sub
    Case 13
        If IsNull([Vertrek]) Then MsgBox "[Vertrek] is niet ingevuld"
        Exit Sub
    Case 14
        If IsNull([Tijdstip]) Then MsgBox "[Tijdstip] is niet ingevuld"
        Exit Sub
    Case Else
        "[Soort] is niet ingevuld"
End Select
End Sub

Werkt zoals ik wil maar ... stel dat die velden nu wel zijn ingevuld, waar laat ik hem dan naar een ander record gaan en de focus verleggen?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan