Ik ben dit probleem al vrij vaak tegengekomen bij het proggen in access forms: je wilt continu checken op de data die is ingevuld in de textboxen (of andere controls), en dan vooral TIJDENS het typen in de textbox.
In VB is dat niet zo moeilijk: gewoon bij elke onchange van een textbox dezelfde subroutine aanroepen die door alle controls loopt en dan je check uitvoeren op de textbox.text property.
In access is het anders, daar MAG je niet refereren aan de .text property als de textbox de focus niet heeft. Als de textbox de focus NIET heeft, dan is de .value property gewoon de ingevulde waarde. Als de textbox WEL de focus heeft, dan wordt de .value waarde pas geupdate met de .text waarde als het record wordt opgeslagen of als de control de focus verliest. De .text property is hetgeen er daadwerkelijk is ingevuld, dus alleen DIE verandert tijdens het typen.
Irritant dus als je een algemene sub wil klussen die door alle controls heenloopt, omdat je de ene keer moet referen aan de .value prop en de andere keer aan de .text. prop. Ik heb het opgelost door gewoon te kijken welke control de focus heeft, dus iets als (versimpeld, aangenomen dat me.controls alleen txtboxen heeft)
Dit werkt op zich vrij goed, maar ik heb het gevoel dat het nog beter kan in access. Heeft iemand hier ervaring mee en een betere oplossing??
In VB is dat niet zo moeilijk: gewoon bij elke onchange van een textbox dezelfde subroutine aanroepen die door alle controls loopt en dan je check uitvoeren op de textbox.text property.
In access is het anders, daar MAG je niet refereren aan de .text property als de textbox de focus niet heeft. Als de textbox de focus NIET heeft, dan is de .value property gewoon de ingevulde waarde. Als de textbox WEL de focus heeft, dan wordt de .value waarde pas geupdate met de .text waarde als het record wordt opgeslagen of als de control de focus verliest. De .text property is hetgeen er daadwerkelijk is ingevuld, dus alleen DIE verandert tijdens het typen.
Irritant dus als je een algemene sub wil klussen die door alle controls heenloopt, omdat je de ene keer moet referen aan de .value prop en de andere keer aan de .text. prop. Ik heb het opgelost door gewoon te kijken welke control de focus heeft, dus iets als (versimpeld, aangenomen dat me.controls alleen txtboxen heeft)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| Function Check() as boolean
For Each ctl In me.controls
if ctl.name = me.activecontrol.name then
<check op ctl.text>
else
<check op ctl.value>
Next ctl
End function
Sub txtBox_OnChange()
cmdOK.enabled = Check
end sub |
Dit werkt op zich vrij goed, maar ik heb het gevoel dat het nog beter kan in access. Heeft iemand hier ervaring mee en een betere oplossing??