Welkom op het forum van startpagina!

Dit forum staat op alleen-lezen. Je kan hier informatie zoeken en oude berichten terugvinden, maar geen nieuwe berichten plaatsen.

Naar overzicht van alle forums

Velden controleren door VBA

  • Bas

    Hallo,

    Ik heb drie tekst velden (, en ) in een formulier, een VBA code moet bij het afsluiten (doormiddel van een knop) het formulier controleren dat alle velden zijn ingevuld. Als één van die drie velden niet is ingevuld moet dit door een msgbox worden gemeld dat het veld of of niet is ingevuld en moet de focus naar dat veld gaan, maar hij moet dit ook aangeven bij twee niet ingevulde velden, en de focus moet dan naar het eerst veld gaan. hoe moet ik dit doen ?

    Groet, Bas

  • ERic B

    Ontwerp de tabel

    Zet bij de tabeleigenschappen (tabblad Algemeen)

    de volgende waardes :

    Vereist Ja

    Lengte nul toestaan op Nee (indien deze aanwezig is)

    Achter Validatietekst kan je Dit veld is verplicht invullen.

    Als je dit gedaan hebt verwijder dan eerst even de velden op je formulier en sleep

    ze er even opnieuw in.

  • Nico

    Het nadeel van deze oplossing is dat de gebruiker steeds weer een nieuwe foutmelding krijgt als hij vergeet een veld in te vullen. Veel eleganter is de volgende oplossing, waarbij de code onder de knop kijkt welke velden leeg zijn, en deze dan vervolgens in 1 boodschap laat zien:

    De code is iets als:

    dim strMessage as string

    strMessage = “”

    If isnull(me.textboxNaam) then strMessage =“-Naam” & vbcrlf

    if isnull(me.textboxAdres) then strMessage = strMessage & “-Adres” & vbcrlf

    If strMessage <>“” then

    strMessage = “U bent vergeten in te vullen:” & strMessage & vbcrlf & “Vul deze velden in.”

    msgbox strMessage

    me.textboxNaam.setfocus (weet dit niet helemaal zeker, zo snel.)

    Else

    docmd.close

    Zoiets, ongeveer. Veel succes!

  • Bas

    Nico

    ik heb dit geprobeerd maar kom er niet uit, hij meld dat een veld niet is in gevuld en dan moet hij naar dat veld gaan (set focus) maar hij sluit het formulier

    dit is de code zolas ik hem heb

    Private Sub Knop5_Click()

    Dim strMessage As String

    strMessage = “”

    If IsNull(Me.Naam) Then strMessage = “-Naam” & vbCrLf

    If IsNull(Me.Adres) Then strMessage = strMessage & “-Adres” & vbCrLf

    If strMessage <> “” Then

    strMessage = “U bent vergeten in te vullen:” & strMessage & vbCrLf & “Vul deze velden in.”

    MsgBox strMessage

    Me.Naam.SetFocus

    End If

    DoCmd.Close

    End Sub

  • RV2

    Je gebruikt sowieso de verkeerde gebeurtenis.

    Gebruik de Voor Bijwerken gebeurtenis van je formulier.

    RV2

  • JaapT

    Bas,

    Je gebruikt als laatste: DoCmd.Close en die werkt!!

    Succes,

    Jaap

  • Bas

    Ik heb alles geprobeerd maar het lukt niet wat doe ik fout ?

  • JaapT

    Bas,

    Je VBA-procedure sluit af met DoCmd.close.

    Waarom staat deze code erin? Deze sluit namenlijk je formulier!!

    Succes,

    Jaap

  • ERic B

    Private Sub Form_BeforeUpdate(Cancel As Integer)

    dim v as integer

    dim m as string

    dim h as integer

    dim a as string

    If IsNull(Me.naam) Then

    m = “ naam”

    v = 1

    h = 1

    End If

    If IsNull(Me.postcode) Then

    If Len(m) > 0 Then m = m & “,”

    m = m & “ postcode”

    If v = 0 Then v = 2

    h = h + 1

    End If

    If IsNull(Me.plaats) Then

    If Len(m) > 0 Then m = m & “,”

    m = m & “ plaats”

    If v = 0 Then v = 3

    h = h + 1

    End If

    If Len(m) > 0 Then

    if h = 1 then

    a = “Het volgende veld is verplicht”

    else

    a = “De volgende velden zijn verplicht”

    end if

    m = a & m & vbCr & “vul deze in.”

    MsgBox m, vbOKOnly + vbExclamation, “Probleem”

    Select Case v

    Case 1: Me.naam.SetFocus

    Case 2: Me.postcode.SetFocus

    Case 3: Me.plaats.SetFocus

    End Select

    Cancel = True

    End If

    End Sub

  • Nico den Tuinder

    Het had natuurlijk moeten zijn:

    else (nl, als het formulier goed was ingevuld)

    Docmd.close

    etc.

    Een foutje is gauw gemaakt. Sorry voor het foutje!