• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 315
  • Last Modified:

Message box cancel NOT working

I have the following code which should prevent a user from saving the record if all of the product checkboxes are empty-they must select one-but is isn't working correctly. Thanks and appreciate any help

Private Sub cmdSave_Click()
On Error GoTo Err_cmdSave_Click

If IsNull(Me.SPC) And IsNull(Me.SPS) And IsNull(Me.CheckFree) And IsNull(SCS) And IsNull(SIM) Then
MsgBox "You must select a Product Type", vbCancel
vbCancel = True
Else
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
    DoCmd.Close
 
Exit_cmdSave_Click:
    Exit Sub
End If

Err_cmdSave_Click:
    MsgBox Err.Description
    Resume Exit_cmdSave_Click
   
End Sub
0
ssmith94015
Asked:
ssmith94015
1 Solution
 
bramsquadCommented:
your code is pretty crazy.  goto statements make the mind go numb


try this

Private Sub cmdSave_Click()
    On Error GoTo Err_cmdSave_Click

    If IsNull(Me.SPC) And IsNull(Me.SPS) And IsNull(Me.CheckFree) And IsNull(SCS) And IsNull(SIM) Then
        'if its all null then just exit out of the function to give them another shot!
        MsgBox "You must select a Product Type", vbOKOnly, "Error"
        Exit Sub
    Else
        'success
        DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
        DoCmd.Close
        Exit Sub
    End If

Err_cmdSave_Click:
    MsgBox Err.Description
End Sub

~b
0
 
ssmith94015Author Commented:
Thanks for the suggestion and I just relaized something.  The IsNull may not work as the six boxes are checkboxes and as my husband stands here yelling at me. I am totally confused about the syntax of using checkboxes.  I tried the below for just one checkbox, but it does not work either.

Private Sub Form_Close()

    On Error GoTo Err_cmdSave_Click
   
    If Me.SPC.Checkboxes.Checked = False Then
        'if its all null then just exit out of the function to give them another shot!
        MsgBox "You must select a Product Type", vbOKOnly, "Error"
        DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
    Else
        'success
        DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
        DoCmd.Close
   
        Exit Sub
    End If

Err_cmdSave_Click:
    MsgBox Err.Description

End Sub
0
 
Arthur_WoodCommented:
take it that the controls SPC, SPS, CheckFree, SCS and SIM are all checkboxes?

This is how you check the value of a checkbox:

   If Not SPC.Checked  AND Not SPS.Checked and NOT CheckFree.Checked and NOT SCS.CHecked and NOT SIM.Checked Then
        'if its all null then just exit out of the function to give them another shot!
        MsgBox "You must select a Product Type", vbOKOnly, "Error"
        DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
    Else
        'success
        DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
        DoCmd.Close
   
        Exit Sub
    End If

The Checked Property of a CheckBox is TRUE if the checkbox IS Checked, and FALSE if is ths NOT checked (these are BOOLEAN values, True and False) so you do not need to EXPLICITLY test ("If SPS.CHecked = True Then"  is IDENTICAL in function to "If SPS.Checked Then")

AW

0
 
huyntminhCommented:
Private Sub Form_Close()

    On Error GoTo Err_cmdSave_Click
   
    If Not (SPC.Checked And SPS.Checked And CheckFree.Checked And SCS.Checked And SIM.Checked) Then
        'if its all null then just exit out of the function to give them another shot!
        MsgBox "You must select a Product Type", vbOKOnly, "Error"
        DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
    Else
        'success
        DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
        DoCmd.Close
   
        Exit Sub
    End If

Err_cmdSave_Click:
    MsgBox Err.Description

End Sub
0
 
Arthur_WoodCommented:
glad to be of assistance

AW
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now