How to stop a form from closing after validating a field

blogmad

Registered User.
Local time
Today, 17:11
Joined
Feb 24, 2006
Messages
16
Hi,
I've got a close button on my form as follows:
Private Sub exitForm_Click()
DoCmd.Close
End Sub

In the beforeupdate event of the form I have have following code to validate the forms fields:

Private Sub Form_BeforeUpdate(Cancel As Integer)
'Place an asterisk (*) in the Tag Property of the text boxes you wish to validate.
'Then in the BeforeUpdate Event of the form, copy/paste the following:


Dim msg As String, Style As Integer, Title As String
Dim nl As String, ctl As Control


nl = vbNewLine & vbNewLine

For Each ctl In Me.Controls
If ctl.ControlType = acTextBox Then
If ctl.Tag = "*" And Trim(ctl & "") = "" Then
msg = "Data Required for '" & ctl.Name & "' field!" & nl & _
"You can't save this record until this data is provided!" & nl & _
"Enter the data and try again . . . "
Style = vbCritical + vbOKOnly
Title = "Required Data..."
MsgBox msg, Style, Title
ctl.SetFocus
Cancel = True
Exit For
End If
End If
Next
End Sub

This validation works fine up to a point. If I try to close the form and a required field is empty, I get a message box asking me to fill in the data. The problem is that when I click ok to the message, it shuts down the form, so I have to re-enter all the data again. My question is how do I prevent the form from closing after clicking ok on the message box?

appreciate your help:)
 
It looks to me like all you're "cancelling" is the update, so of course the form proceeds to close. I think you need to change your close button to include an if statement, something like
If myupdate()=true then docmd.close

Then create function myupdate() to return TRUE if everything gets updated correctly.

Hope that helps.
 

Users who are viewing this thread

Back
Top Bottom