View Single Post
  #3  
Old May 20th, 2010, 12:31 PM posted to microsoft.public.access.forms
mie via AccessMonster.com
external usenet poster
 
Posts: 9
Default looping through controls - for each ... next

If i understand correctly, what you want to do is, if user select 'YES', edit
data then suddenly
change to 'NO'. So, all changes should be cancel, right?

This code untested..i just copy n paste your code and add a few line.

Dim ctl As Control

For Each ctl In Me
If ctl.Tag = "col" Then
If Me.cboColor.Value = "Yes" Then
ctl.Enabled = True
Else
If ctl.Value = False Then 'nothing has been checked;
disable the controls

ctl.Enabled = False

'--Add this Line.
If ctl.Value = True Then ctl.Value = False

Else 'something has been checked; tell user it will be
deleted
iresponse = MsgBox("Changing this from Yes will delete
the information in the " & _
"related fields." & _
Chr(13) & Chr(13) & "Continue?", 4 + 48 + 256, "Delete
confirmation")
If iresponse = 7 Then ' user said
No
Me.cboColor.Value = "Yes"
Exit Sub
Else ' user said Yes
ctl.Value = Null
ctl.Enabled = False
End If
End If
End If
End If
Next
Set ctl = Nothing



Private Sub cboColor_AfterUpdate()

For Each ctl In Me
If ctl.Tag = "col" Then
If Me.cboColor.Value = "Yes" Then
ctl.Enabled = True
Else
If ctl.Value = False Then 'nothing has been checked;
disable the controls
ctl.Enabled = False

'-----Put this line
If ctl.Value=True Then ctl.Value = False
Else 'something has been checked; tell user it will be
deleted
iresponse = MsgBox("Changing this from Yes will delete
the information in the " & _
"related fields." & _
Chr(13) & Chr(13) & "Continue?", 4 + 48 + 256, "Delete
confirmation")
If iresponse = 7 Then ' user said
No
Me.cboColor.Value = "Yes"
Exit Sub
Else ' user said Yes
ctl.Value = Null
ctl.Enabled = False
End If
End If
End If
End If
Next
Set ctl = Nothing

End Sub


Kurt Heisler wrote:
If the user checks selects 'Yes' from a combo box, I'd like to enable
a group of check boxes (all have tag property "col"). If the user
selects 'No', I'd like to disable them but, if any are checked, tell
the user data will be deleted and then set the checkboxes = Null
(assuming the user says okay). My current code triggers the prompt for
*each* check box that's checked, rather then looping through them
automatically. Do I need to another "For each ..." clause after the
first Else statement?

###

Private Sub cboColor_AfterUpdate()

For Each ctl In Me
If ctl.Tag = "col" Then
If Me.cboColor.Value = "Yes" Then
ctl.Enabled = True
Else
If ctl.Value = False Then 'nothing has been checked;
disable the controls
ctl.Enabled = False
Else 'something has been checked; tell user it will be
deleted
iresponse = MsgBox("Changing this from Yes will delete
the information in the " & _
"related fields." & _
Chr(13) & Chr(13) & "Continue?", 4 + 48 + 256, "Delete
confirmation")
If iresponse = 7 Then ' user said
No
Me.cboColor.Value = "Yes"
Exit Sub
Else ' user said Yes
ctl.Value = Null
ctl.Enabled = False
End If
End If
End If
End If
Next
Set ctl = Nothing

End Sub

###

Thank you.


--
Message posted via http://www.accessmonster.com