From: Kurt Heisler on 20 May 2010 01:04 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.
From: Rob Parker on 20 May 2010 01:26 Why not just show a warning message and get the response, then only run the code if the user has agreed that the data can be changed. HTH, Rob 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.
From: mie via AccessMonster.com on 20 May 2010 07:31 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
From: mie via AccessMonster.com on 20 May 2010 07:38 Sorry, i didnt go through your code to the end. So, DONT USE THE CODE I SUGGESTED. I''ll be back when i'am finished. mie wrote: >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() >> >[quoted text clipped - 6 lines] >>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 >[quoted text clipped - 18 lines] >> >>End Sub > >>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 >[quoted text clipped - 43 lines] >> >>Thank you. -- Message posted via http://www.accessmonster.com
From: mie via AccessMonster.com on 20 May 2010 08:23 So here it is..(untested) Dim ctl As control For Each ctl In Me.Controls If ctl.Tag = "Col" Then If Me.cboColor = "Yes" Then ctl.enabled = True Else If ctl.value = True Then ctl.value = False ctl.enabled = False End If End If Next For me, i will ask user confirmation once only. Then proceed the cancellation process. Imagine if you have 10 check boxes, user will be prompted 10 time for confirmation.. 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
|
Next
|
Last
Pages: 1 2 3 Prev: should i hide a form or make it modal Next: subform for inputting grades not working |