Steve Capistrant
scapistrant at symphonyinfo.com
Thu Aug 28 13:22:14 CDT 2003
Dan, Does Lambert's idea work? If it does, I won't think anymore about the wrinkles in passing the control object to the function. 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 Heenan, Lambert Sent: Thursday, August 28, 2003 10:46 AM To: 'Access Developers discussion and problem solving' Cc: 'dwaters at usinternet.com' Subject: RE: [AccessD] Calling an AfterUpdate Event in a different form. 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 _______________________________________________ AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com