Solved

Closing Form from After Update Event

Posted on 2008-06-17
3
221 Views
Last Modified: 2013-11-28
I have a form that is to close after collecting data in a single field.  I put a DoCmd.Close command in the after update event which works well if the field is updated and the enter button is pressed, however if the field is updated and the form close button is selected I get the error message 'Error 2501: The Close action was canceled'.  There is code running in the close event to update the parent form.  How do I correct this error message?  Attached is the code related to this form.
Private Sub FMS_Oblig_AfterUpdate()

'Close Form

DoCmd.Close acForm, "Change Obligation"

End Sub
 

Private Sub Form_Close()

Dim rst, rst2 As Recordset

Dim strBookmark As Variant

Dim strFCPParameter As String
 

'Move active record back to same location with updated data

If Me.OpenArgs Then

    Forms("Multi Year End").List_of_Year_End_Multi_Year_Obligations.Requery

    Set rst = Forms("Multi Year End").List_of_Year_End_Multi_Year_Obligations.Form.RecordsetClone

    Set rst2 = Me.RecordsetClone

    strFCPParameter = IIf(IsNull(rst2.Fields("FCP")), " AND (FCP) Is Null", " AND (FCP='" & rst2.Fields("FCP").Value & "')")

    rst.FindFirst "(ACC='" & rst2.Fields("ACC").Value & "') AND (Appropriation='" & rst2.Fields("Appropriation").Value & "') AND ([As Of]=#" & rst2.Fields("As Of").Value & "#)" & strFCPParameter

    Forms("Multi Year End").List_of_Year_End_Multi_Year_Obligations.Form.Bookmark = rst.Bookmark

Else

    Forms("Last Year End").Last_Year_End_Obligations.Requery

    Set rst = Forms("Last Year End").Last_Year_End_Obligations.Form.RecordsetClone

    Set rst2 = Me.RecordsetClone

    strFCPParameter = IIf(IsNull(rst2.Fields("FCP")), " AND (FCP) Is Null", " AND (FCP='" & rst2.Fields("FCP").Value & "')")

    rst.FindFirst "(ACC='" & rst2.Fields("ACC").Value & "') AND (Appropriation='" & rst2.Fields("Appropriation").Value & "') AND ([As Of]=#" & rst2.Fields("As Of").Value & "#)" & strFCPParameter

    Forms("Last Year End").Last_Year_End_Obligations.Form.Bookmark = rst.Bookmark

End If

Set rst = Nothing

End Sub

Open in new window

0
Comment
Question by:vincem1099
  • 2
3 Comments
 
LVL 77

Expert Comment

by:peter57r
ID: 21804637
Why is there an Enter button if you always want to close the form after the entry is made?
0
 
LVL 7

Author Comment

by:vincem1099
ID: 21804835
I was referring to the enter button on the keyboard.  Pressing the enter button on the keyboard lets access know that the field has been updated so the after update event will trigger.
0
 
LVL 77

Accepted Solution

by:
peter57r earned 250 total points
ID: 21805407
OK I see.  That makes the events processing tricky.

Change the process as follows.

Remove the X close form button.
Add your own form close button using the button wizard.
Modify the code for this button as follows..
if me.dirty = false then
Docmd.close acform, me.name
else
me.dirty=false ' saves record and executes form Afterupdate event - do not close the form here
end if

Modify your existing afterupdate procedure to save the record.
Private Sub FMS_Oblig_AfterUpdate()
me.dirty = false . saves and forces Form-afterupdate event to fire.
End Sub

In the form_afterupdate event..
Docmd.Close acform, me.name

This means that if the record is changed only one form close event will fire.
0

Featured Post

U.S. Department of Agriculture and Acronis Access

With the new era of mobile computing, smartphones and tablets, wireless communications and cloud services, the USDA sought to take advantage of a mobilized workforce and the blurring lines between personal and corporate computing resources.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I originally created this report in Crystal Reports 2008 where there is an option to underlay sections. I initially came across the problem in Access Reports where I was unable to run my border lines down through the entire page as I was using the P…
Introduction The Visual Basic for Applications (VBA) language is at the heart of every application that you write. It is your key to taking Access beyond the world of wizards into a world where anything is possible. This article introduces you to…
Familiarize people with the process of utilizing SQL Server views from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Access…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

864 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now