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

Heenan, Lambert Lambert.Heenan at AIG.com
Thu Aug 28 10:45:43 CDT 2003


First point is your 'function'  PopupCalendar is not returning any value.
You should modify it so that it gets the date value from the calendar form
and returns that value to the caller.

Secondly, presumably you are calling  PopupCalendar() from the form that
needs the date value (in the OnClick event of the date field?). In which
case, why not simply call the field's AfterUpdate event immediately after
the call to  PopupCalendar(). Because you open the calendar form with
acDialog, the procedure that called  PopupCalendar() will wait until the
calendar form has closed before executing the AfterUpdate event.

All it takes is one more line of code and no need to write a bunch of public
routines for every field that you want to use the calendar form with.

Private Sub txtDateStart_Click()
    txtDateStart =  PopupCalendar(txtDateStart)b ' get the date value as the
function return value
    txtDateStart_AfterUpdate ' call the event handler
End Sub

Here's how I would change your function...

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

    Dim varStartDate As Variant
    
    If IsNull(txt.Value) Then
        varStartDate = CurrentDate
    Else
        varStartDate = txt.Value
    End If
    
    DoCmd.OpenForm "frmCalendar", , , , , acDialog, varStartDate
    
    If IsFormLoaded("frmCalendar") = True Then
        PopupCalendar = Format(DateSerial(frmCal!Year, frmCal!Month,
frmCal!Day), "m/d/yy")
        DoCmd.Close acForm, "frmCalendar"
    End If
    
    Exit Function
    
EH:
    Application.Echo True
    Call GlobalErrors("", Err.Number, Err.Description,
CurrentObjectName,"PopupCalendar", txt)
    
End Function

Just a little bit simpler this way. And we all know what KISS means :-)

Lambert

> -----Original Message-----
> From:	Dan Waters [SMTP:dwaters at usinternet.com]
> Sent:	Thursday, August 28, 2003 11: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