Controleren of textbox leeg is

Status
Niet open voor verdere reacties.

Tamara27

Gebruiker
Lid geworden
1 mrt 2010
Berichten
224
Ik ben niet zo'n krak in access, maar zou aan de hand van een formuliertje een aantal worddocumenten laten invullen.
Dat loopt voorlopig allemaal prima.

Ik zou echter 2 textboxen op mijn formulieren willen controleren om te zien of deze wel effectief gegevens bevatten voor de documenten gegenereerd worden,
zijnde Familienaam en Voornaam.

Ik heb onderstaande (misschien wel erg simplistische) code:

Code:
Private Sub MaakAttesten_Click()
If txtFamilienaam.text = "" Then
    If txtVoornaam.text = "" Then
        Call MsgBox("Vul familienaam en voornaam in aub", vbOKOnly, "Onvoldoende gegevens")
    Else
        Call MsgBox("Vul familienaam in aub", vbOKOnly, "Onvoldoende gegevens")
    End If
Else
    If txtVoornaam.txt = "" Then
            Call MsgBox("Vul voornaam in aub", vbOKOnly, "Onvoldoende gegevens")
    Else
         If MsgBox("Wil u attesten voor " & Me.txtFamilienaam & " " & Me.txtVoornaam & " maken?", vbYesNo, "Attesten maken") = vbYes Then
            [I]  // code om attesten te genereren //[/I]
        Else
            Call MsgBox("Geannuleerd", vbOKOnly, "Attesten maken geannuleerd")
        End If
    End If
End If
End Sub

Ik krijg echter steeds volgende foutmelding:
"you can't reference a property or method for a control unless the control has the focus"

Geen idee wat ik hier mee moet!
IK heb al geprobeerd
Code:
.text = ""
door
Code:
.value = 0
te vervangen, maar dan werkt het ook niet.

Iemand die me even op weg helpt?

Bedankt!
 
Je code werkt niet, omdat je de eigenschap .Text niet zo mag gebruiken; die is, zoals de boodschap al aangeeft, alleen te gebruiken als een object de Focus heeft. En dat is niet zo, omdat je de focus op de knop hebt staan. Er is ook geen enkele noodzaak om deze eigenschap te gebruiken; .Value laat exact dezelfde inhoud zien. En díe eigenschap kun je dus wél gebruiken.
Verder zag ik, maar dat heeft niets met het probleem te maken, dat je (nog) geen IntelliSense gebruikt, en daarmee snij je jezelf nodeloos in de vingers. Leer jezelf aan om dat wél te doen!
 
Erg bedankt! Om de een of andere reden werkt het wel als ik de stelling omdraai, dus .value <> "".
 
Value kun je altijd gebruiken, zoals ik al zei :). Je code kan trouwens een stuk handiger, maar dat had je zelf ook al gezien.
 
Octafish,

Ik vermoed inderdaad dat het handiger kan, maar aangezien ik niet zo bedreven ben in Access, en ik dus stukje voor stukje telkens wat extra probeer bij te bouwen, creëer ik telkens oneindig lange codes :)

Maar hé, het werkt wel! (soms!) ;-)
 
Begin eens met het weglaten van Call. Dat is nergens voor nodig bij een MsgBox, dat is namelijk geen macro. En zelfs daar hoeft het tegenwoordig niet meer.
 
Code:
Private Sub MaakAttesten_Click()
   sn=array("attesten maken","voornaam ontbreekt","achternaam ontbreekt","voornaam en achternaam ontbreken")
   
   msgbox sn(-(txtFamilienaam="") -2*( txtVoornaam="" ))
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan