A Microsoft Office (Excel, Word) forum. OfficeFrustration

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

Go Back   Home » OfficeFrustration forum » Microsoft Access » General Discussion
Site Map Home Register Authors List Search Today's Posts Mark Forums Read  

Close Form Event



 
 
Thread Tools Display Modes
  #1  
Old June 5th, 2010, 04:03 AM posted to microsoft.public.access
PeterM
external usenet poster
 
Posts: 208
Default Close Form Event

I have a AC2003 bound form. The condition I'm trying to capture is if the
user modifies any item on the form and they close the form without saving
changes. Simple...right? I found out that Form_Close doesn't work so I
tried the following code in the Form_Unload event and that isn't working
either. It does not even trigger the event. Can someone please tell me what
I'm doing wrong? I would be much appreciated.

Private Sub Form_Unload(Cancel As Integer)
If Me.btnSave.Enabled Then
Dim strMsg As String
strMsg = strMsg & "Save Changes?" & Chr(13) & Chr(13)
If MsgBox(strMsg, vbQuestion + vbYesNo, "Please Confirm!") = vbYes
Then
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70
Else
Cancel = True
End If
End If
End Sub

  #2  
Old June 5th, 2010, 04:45 AM posted to microsoft.public.access
Jeanette Cunningham
external usenet poster
 
Posts: 2,190
Default Close Form Event

You can code the save button like this:

Private Sub btnSave_Click()
Dim strMsg As String
strMsg = strMsg & "Save Changes?" & Chr(13) & Chr(13)

If Me.Dirty = True Then
If MsgBox(strMsg, vbQuestion + vbYesNo, "Please Confirm!") = vbYes Then
Me.Dirty = False
Else
Me.Undo
End If
End If
End Sub

You will need some error handling to trap errors if something stops the
save, for example a required field missing.


Jeanette Cunningham MS Access MVP -- Melbourne Victoria Australia

"PeterM" wrote in message
...
I have a AC2003 bound form. The condition I'm trying to capture is if the
user modifies any item on the form and they close the form without saving
changes. Simple...right? I found out that Form_Close doesn't work so I
tried the following code in the Form_Unload event and that isn't working
either. It does not even trigger the event. Can someone please tell me
what
I'm doing wrong? I would be much appreciated.

Private Sub Form_Unload(Cancel As Integer)
If Me.btnSave.Enabled Then
Dim strMsg As String
strMsg = strMsg & "Save Changes?" & Chr(13) & Chr(13)
If MsgBox(strMsg, vbQuestion + vbYesNo, "Please Confirm!") = vbYes
Then
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70
Else
Cancel = True
End If
End If
End Sub



  #3  
Old June 5th, 2010, 06:00 AM posted to microsoft.public.access
PeterM
external usenet poster
 
Posts: 208
Default Close Form Event

I don't think I've explained the problem clearly. I have the save button
setup the way you define in your example. How do I capture if the user
changes a bound item on a form and tries to close the form without clicking
on the save button first. There is no close button on the form, a form is
closed by a parent form when another form is opened. I need to determine
when the form is closed but still is dirty. THe unload and close events
don't work in that situation.

"Jeanette Cunningham" wrote:

You can code the save button like this:

Private Sub btnSave_Click()
Dim strMsg As String
strMsg = strMsg & "Save Changes?" & Chr(13) & Chr(13)

If Me.Dirty = True Then
If MsgBox(strMsg, vbQuestion + vbYesNo, "Please Confirm!") = vbYes Then
Me.Dirty = False
Else
Me.Undo
End If
End If
End Sub

You will need some error handling to trap errors if something stops the
save, for example a required field missing.


Jeanette Cunningham MS Access MVP -- Melbourne Victoria Australia

"PeterM" wrote in message
...
I have a AC2003 bound form. The condition I'm trying to capture is if the
user modifies any item on the form and they close the form without saving
changes. Simple...right? I found out that Form_Close doesn't work so I
tried the following code in the Form_Unload event and that isn't working
either. It does not even trigger the event. Can someone please tell me
what
I'm doing wrong? I would be much appreciated.

Private Sub Form_Unload(Cancel As Integer)
If Me.btnSave.Enabled Then
Dim strMsg As String
strMsg = strMsg & "Save Changes?" & Chr(13) & Chr(13)
If MsgBox(strMsg, vbQuestion + vbYesNo, "Please Confirm!") = vbYes
Then
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70
Else
Cancel = True
End If
End If
End Sub



.

  #4  
Old June 5th, 2010, 06:41 AM posted to microsoft.public.access
John W. Vinson
external usenet poster
 
Posts: 18,261
Default Close Form Event

On Fri, 4 Jun 2010 22:00:58 -0700, PeterM
wrote:

I don't think I've explained the problem clearly. I have the save button
setup the way you define in your example. How do I capture if the user
changes a bound item on a form and tries to close the form without clicking
on the save button first. There is no close button on the form, a form is
closed by a parent form when another form is opened. I need to determine
when the form is closed but still is dirty. THe unload and close events
don't work in that situation.


Use the form's BeforeUpdate event. It will fire if any field value is changed
and any action is taken that would save it (such as closing the form, pressing
Shift-Enter, etc.) You can set the value of a public variable in the
legitimate "close" button and check that variable's value in the BeforeUpdate
event; if you don't want to save the record, issue a message and set the
event's Cancel parameter to True.
--

John W. Vinson [MVP]
  #5  
Old June 6th, 2010, 04:18 AM posted to microsoft.public.access
PeterM
external usenet poster
 
Posts: 208
Default Close Form Event

Thanks John!

"John W. Vinson" wrote:

On Fri, 4 Jun 2010 22:00:58 -0700, PeterM
wrote:

I don't think I've explained the problem clearly. I have the save button
setup the way you define in your example. How do I capture if the user
changes a bound item on a form and tries to close the form without clicking
on the save button first. There is no close button on the form, a form is
closed by a parent form when another form is opened. I need to determine
when the form is closed but still is dirty. THe unload and close events
don't work in that situation.


Use the form's BeforeUpdate event. It will fire if any field value is changed
and any action is taken that would save it (such as closing the form, pressing
Shift-Enter, etc.) You can set the value of a public variable in the
legitimate "close" button and check that variable's value in the BeforeUpdate
event; if you don't want to save the record, issue a message and set the
event's Cancel parameter to True.
--

John W. Vinson [MVP]
.

 




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Forum Jump


All times are GMT +1. The time now is 04:39 PM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 OfficeFrustration.
The comments are property of their posters.