[AccessD] Multiple Unbound Text Boxes After Update Event

Salakhetdinov Shamil mcp2004 at mail.ru
Sun Feb 2 11:07:03 CST 2014


 Hi Vlad,

As Jim noted WithEvents would be an overkill - just use code behind:

Private Sub Form_Load()
Dim ectl As Object
For Each ectl In Me.Controls
If ectl.ControlType = 109 Then
ectl.AfterUpdate = "=TextBox_AfterUpdate()"
End If
Next ectl
End Sub


and standard module function
Public Function TextBox_AfterUpdate()
Dim txt As TextBox
Set txt = Application.Screen.ActiveControl
Debug.Print "After update [" & txt.Name & "] = " & _
"'" & txt.Value & "'"
End Function

or instead of code behind you can use a function from a standard module to set AfterUpdate event processing function for TextBox controls of a form, which instance object reference is passed in parameter:

Public Sub SetAfterUpdateHandler(ByRef frm As Form)
Dim ectl As Object
For Each ectl In frm.Controls
If ectl.ControlType = 109 Then
ectl.AfterUpdate = "=TextBox_AfterUpdate([Form])"
End If
Next ectl
End Sub
Public Function TextBox_AfterUpdate(ByRef frm As Form)
Dim txt As TextBox
Set txt = frm.ActiveControl
Debug.Print "After update [" & txt.Name & "] = " & _
"'" & txt.Value & "'"
End Function


> There are other text boxes and combo boxes on this form, but I don't want
> the code to apply to them. Is this possible?
Just skip them while you're setting AfterUpdate event handler - as JC noted - use a naming convention or .Tag property with special values for the controls to be skipped or to have their AfterUpdate event handler set.

-- Shamil


Sunday, February  2, 2014 10:35 AM -05:00 from John W Colby <jwcolby at gmail.com>:
>Or use a class and a control scanner. Then use a naming convention such that each control that needs 
>this stuff done has some common text in the name.
>
>John W. Colby
>
>Reality is what refuses to go away
>when you do not believe in it
>
>On 2/2/2014 10:15 AM, Jim Dettman wrote:
>>   As Shamil mentioned, you can with a text box class and with events, but
>> it's a lot of work to hook it up.
>>
>>   What you can also do is write one procedure that accepts a form and control
>> reference as string arguments, and then with some code set all the
>> afterupdate events in the property sheet to that procedure.
>>
>>   I can dig out an example if you want.
>>
>> Jim.
>> -----Original Message-----
>> From:  accessd-bounces at databaseadvisors.com
>> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of ACTEBS
>> Sent: Sunday, February 02, 2014 07:14 AM
>> To:  accessd at databaseadvisors.com
>> Subject: [AccessD] Multiple Unbound Text Boxes After Update Event
>>
>> Hi Everyone,
>>
>> 
>>
>> I have a form that has a sections with 100 separate text boxes that require
>> users input. Once the user inputs values it triggers various calculations to
>> be carried out.
>>
>> 
>>
>> My question is, instead of having an After Update event triggered for each
>> text box, which is a lot of code to manage, is it possible to execute the
>> code in some other fashion that applies to these 100 text boxes only, but
>> can be placed in one module?
>>
>> 
>>
>> There are other text boxes and combo boxes on this form, but I don't want
>> the code to apply to them. Is this possible?
>>
>> 
>>
>> Thanks
>>
>> 
>>
>> Vlad
>>
>


-- 
Салахетдинов Шамиль


More information about the AccessD mailing list