Charlotte Foust
cfoust at infostatsystems.com
Tue Jun 24 10:14:34 CDT 2008
You can get totally entangled in the order of events within a form, let along between a parent and child form. And some events don't happen when an object is used as a subform but they do when it's used as a form. I must have missed the form/subform combination in the thread. Sorry. Charlotte Foust -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Tony Septav Sent: Tuesday, 24 June 2008 6:08 a.m. To: Access Developers discussion and problem solving Subject: Re: [AccessD] Form BeforeUpdate Hey Charlotte Thank you. But I wasn't trying to cancel the close the form per se. It was about the BeforeUpdate I will try to keep this short, maybe I am doing something wrong but.... If I simply have a bound form with 1 field "Product" and a <Close> button with Msgbox 1 DoCmd.Close And on the BeforeUpdate for the form Msgbox 2 DoCmd.CancelEvent And I change the contents of the field. Then click the <Close> button. Msgbox 1 fires first (and close) and then MsgBox 2 fires (and cancelevent) next and of course the form closes, which is not what you want to happen, you want to show the user the validation tests failed and return them to the record in the form. If remove the BeforeUpDate for the form and put it in the BeforeUpdate in the Product field Msgbox 2 DoCmd.CancelEvent And I change the contents of the field. Then click the <Close> button. Msgbox 2 fires first and the DoCmd.CancelEvent fires and I never get the MsgBox 1 and the close. This is what you would expect, but I didn't want to put BeforeUpdates on all my fields in a form, rather one global check. I know this logic, form vs control BeforeUpdate probably is due to the difference between a form versus a controls actions. So by using a subform I was able to run my validations using the subform BeforeUpdate and a close button on the main form. Charlotte Foust wrote: >I don't believe you can cancel the form's close event. You have to use >the Unload event instead if you want to cancel. However, a lot depends >on how your close button behaves. If it just calls close, then a >CancelEvent is not going to change that. If it calls Form_Unload and >the Unload event calls DoCmd.Close, then the CancelEvent should work, I >think. > >Charlotte Foust > >-----Original Message----- >From: accessd-bounces at databaseadvisors.com >[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Tony Septav >Sent: Sunday, 22 June 2008 5:38 a.m. >To: Access Developers discussion and problem solving >Subject: [AccessD] Form BeforeUpdate > >Hey All >I am trying to use the BeforeUpdate on a bound continuous form. The >code works and checks the data in the current record for validation and >if an error is found it pops up a message and fires the >docmd.cancelevent (or cancel = true). >Everything works fine, except when I click on the add, delete, or close >buttons (mine) in the form's footer, then the code works fine and the >message pops up, but the docmd.cancelevent doesn't fire. Is this a bug, >or am I missing something. >-- >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