[AccessD] Calling an AfterUpdate Event in a different form.

Steve Capistrant scapistrant at symphonyinfo.com
Thu Aug 28 10:33:15 CDT 2003


Oops, I spoke too soon. You were already handling it in a public area.  The
thing you are missing is this:  send the control as one of the parameters in
the function.  for example, your function name should look like:

Public Function PopupCalendar(ctlForm as control, txt As TextBox) As Variant

What you pass for the control parameter is the fully qualifed form and
control name, like

forms!frmCalendar!txtStartDate

Then your function already has everything it needs, and you don't have to
run through a burdensome Select Case process to guess which context is being
used.

Steve Capistrant
Symphony Information Services
scapistrant at symphonyinfo.com
Phone: 612-333-1311
www.symphonyinfo.com
212 3rd Ave N, Ste 404
Minneapolis, MN 55401


-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com]On Behalf Of Dan Waters
Sent: Thursday, August 28, 2003 10:18 AM
To: Database Advisors
Subject: [AccessD] Calling an AfterUpdate Event in a different form.


Is this possible?

I have a calendar form that is triggered by double-clicking in a date field.
Putting the date into the correct field works fine, but I need to be able to
trigger the AfterUpdate event for whatever date field is on whatever form,
and I haven't been able to figure this out.  The AfterUpdate event is
Public.  The associated code is below, and is in a standard module:


Public Function PopupCalendar(txt As TextBox) As Variant
On Error GoTo EH

    [IN THIS EXAMPLE, txt = txtDateStart FROM THE CALLING FORM]

    Dim frmCal As Form
    Dim varStartDate As Variant
    Dim frmParent As Form
    Dim stgParent As String
    Dim stgAfterUpdateEvent As String

    If IsNull(txt.Value) Then
        varStartDate = CurrentDate
    Else
        varStartDate = txt.Value
    End If

    DoCmd.OpenForm "frmCalendar", , , , , acDialog, varStartDate

    If IsFormLoaded("frmCalendar") = True Then
        Set frmCal = Forms("frmCalendar")
        txt.Value = Format(DateSerial(frmCal!Year, frmCal!Month,
frmCal!Day), "m/d/yy")

        stgParent = txt.Parent.Name
        Set frmParent = Forms(stgParent)
        stgAfterUpdateEvent = txt.Name & "_AfterUpdate"

        Call frmParent.stgAfterUpdateEvent        [THIS IS WHAT I WANT - BUT
NO DICE!]

        Call frmParent.txtDateStart_AfterUpdate   [THIS WORKS, BUT WOULD
NEED A CASE FOR EVERY FIELD!]

        DoCmd.Close acForm, "frmCalendar"
        Set frmCal = Nothing
    End If

    Exit Function

EH:
    Application.Echo True
    Call GlobalErrors("", Err.Number, Err.Description, CurrentObjectName,
"PopupCalendar", txt)

End Function



_______________________________________________
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com





More information about the AccessD mailing list